Brevet FR3038404A1 — publié le 20170106

Procédé et système d'exécution sécurisée de machines virtuelles par un ensemble de dispositifs programmables interconnectés La présente invention concerne un procédé d'exécution sécurisée de machines virtuelles par un ensemble de dispositifs programmables interconnectés, chaque dispositif programmable comportant au moins un processeur de calcul, et un système d'exécution sécurisée de machines virtuelles associé. L'invention se situe dans le domaine de l'exécution sécurisée de machines virtuelles, et trouve une application particulière dans l'exécution de machines virtuelles dans un système centralisé de traitement de données. L'exécution sécurisée de certaines applications informatiques, dites critiques, est un enjeu important, dans de nombreux contextes industriels et commerciaux. L'exécution sécurisée d'une application informatique, assurant un certain niveau de sécurité et de robustesse vis-à-vis de diverses attaques de piratage, par un ensemble de ressources matérielles, implique un partitionnement matériel ou logiciel des ressources matérielles pour effectuer une séparation entre un environnement d'exécution de niveau de sécurité normal ou standard et un environnement d'exécution sécurisé. La séparation logicielle est effectuée, de manière connue, par un mécanisme d'hyperviseur ou VMM (pour « Virtual Machine Monitor » en anglais). Grâce à un tel mécanisme, des applications différentes peuvent être exécutées dans des environnements mémoire isolés les uns des autres de la portion matérielle de niveau de sécurité standard d'un processeur. On connaît par ailleurs des architectures de cloisonnement matériel, par exemple l'architecture TrustZone 0 de la société ARM qui fournit un processeur pourvu d'une portion ou enclave matérielle sécurisée, cloisonnée par rapport à une portion matérielle de niveau de sécurité standard, plus faible que le niveau dit sécurisé. Ce cloisonnement se traduit par la capacité du processeur de basculer d'un mode normal à un mode sécurisé pour lequel des ressources matérielles sont isolées physiquement du mode normal. Ces ressources matérielles isolées sont par exemple de la mémoire, des ressources réseaux, des accélérateurs cryptographiques. De même, le niveau de privilège et les instructions autorisées à l'exécution par le processeur sont distincts selon le mode normal ou le mode sécurisé. Dans la suite de la description, on parlera respectivement de portion matérielle de niveau de sécurité standard et de portion matérielle sécurisée, pour désigner l'ensemble des ressources matérielles mises en oeuvre dans le mode normal et dans le mode sécurisé dudit processeur. Le basculement du mode normal au mode sécurisé se fait sur 3038404 2 requête du mode normal à l'aide d'une instruction spécifique ou lors d'une interruption matérielle issue d'une des ressources matérielles attachées au mode sécurisé. La prise en charge de la requête à l'issue du basculement du mode normal au mode sécurisé est réalisée par un micrologiciel de pilotage du processeur (ou 5 « firmware » en anglais). Ce micrologiciel est à distinguer du microcode du processeur qui n'est pas accessible et qui définit par ailleurs le jeu d'instructions du processeur. Ce micrologiciel est aussi exécuté au démarrage (ou « boot » en anglais) du processeur qui s'effectue en mode sécurisé de telle sorte qu'une chaîne de confiance soit établie dès le début. A l'issue de la séquence de démarrage, le micrologiciel initie le 10 démarrage dans le monde normal. Le micrologiciel est constitué de séquence d'instructions du processeur de niveau de privilège parmi les plus élevés. Par exemple, dans le cas de processeurs d'architecture ARM v8 0, le micrologiciel de pilotage du processeur permet d'utiliser une instruction donnée, appelée SMC pour « Secure Monitor Call », qui permet à une application exécutée dans la portion de niveau 15 de sécurité standard du processeur, de passer des paramètres d'exécution pour requérir l'exécution d'au moins une instruction, dite critique, de cette application par la portion matérielle sécurisée du processeur. Il existe également d'autres architectures fournissant des fonctionnalités similaires, tel SGX 0 de Intel 0, dans le contexte duquel les niveaux de privilèges sont appelés 20 anneaux de protection, ou « CPU privilege rings » en anglais. Une telle architecture assure l'exécution, ainsi dite sécurisée, d'au moins une instruction critique, d'une application, dans un environnement d'exécution isolé dans la portion sécurisée du processeur, appelé Trusted Execution Environment (TEE). L'application exécutée au sein du TEE (parfois appelée « trustlet ») est composée 25 de plusieurs séquences d'instructions, qui selon la conception du code (découpage en plusieurs tâches d'exécution ou « threads » en anglais) sont éventuellement exécutées sur plusieurs coeurs de processeurs en parallèle au sein d'un même TEE. Lorsque plusieurs machines virtuelles, chacune comportant un système d'exploitation ou OS (pour « Operating System » en anglais) exécutent sur un même 30 processeur une ou plusieurs applications, se pose un problème de partage de la portion matérielle sécurisée du processeur permettant des exécutions isolées les unes des autres des applications de chacune des machines virtuelles. Dans ce cas, en effet, la séparation assurée par l'hyperviseur dans la portion de sécurité standard du processeur, n'est pas assurée au sein de la portion sécurisée. 35 En outre, l'utilisation d'ensembles de serveurs de stockage et de calcul, à distance, par de nombreuses machines virtuelles clientes, appelée « cloud computing », 3038404 3 est de plus en plus courante. Dans un tel contexte, de nombreuses machines virtuelles cherchent à accéder aux ressources matérielles mises à disposition. En général, ces machines virtuelles appartiennent à divers propriétaires. Le problème d'une possibilité d'exécution sécurisée, et notamment le problème mentionné ci-dessus, est crucial dans 5 un tel contexte. Pour résoudre ce dernier problème, la demande de brevet US2009/0204964 Al propose une plateforme virtuelle sécurisée distribuée, mettant en oeuvre une architecture à hyperviseur sécurisé. L'architecture propose une virtualisation logique de modules TPM, qui sont des composants matériels cryptographiques. Les solutions basées sur ces 10 composants sont vulnérables à certains types d'attaques. Ils permettent en effet de vérifier l'intégrité des applications chargées pour être exécutées, mais n'assurent pas d'isolation matérielle de leurs exécutions. En alternative, les modules de sécurité matériels, ou HSM, pour « hardware security modules », en anglais, nécessitent des unités de traitement dédiées. De plus, ces modules sont coûteux. 15 L'invention a pour objectif de remédier à ces inconvénients des solutions connues, en proposant une solution plus sûre et moins coûteuse pour l'exécution sécurisée d'applications en provenance de machines virtuelles multiples mises en oeuvre par une pluralité de dispositifs programmables interconnectés. A cet effet, l'invention propose un procédé d'exécution sécurisée de machines 20 virtuelles par un ensemble de dispositifs programmables interconnectés, chaque dispositif programmable comportant au moins un processeur de calcul comportant un ou plusieurs coeurs, chaque dispositif programmable étant apte à exécuter simultanément et/ou successivement des applications d'une pluralité de machines virtuelles, chaque processeur comportant une portion matérielle d'exécution de niveau de sécurité standard 25 et une portion matérielle sécurisée de niveau de sécurité supérieur au niveau de sécurité standard, lesdites portions matérielles étant cloisonnées. Ce procédé comporte les étapes suivantes : -mémorisation d'au moins un environnement d'exécution sécurisé associé à chaque machine virtuelle, chaque environnement d'exécution sécurisé comportant au 30 moins une instruction d'une application associée, -sur requête d'exécution sécurisée d'au moins une suite d'instructions d'une application par une machine virtuelle requérante, - allocation à ladite exécution sécurisée d'au moins une portion matérielle sécurisée disponible appartenant à l'un des processeurs de l'ensemble de 35 dispositifs programmables interconnectés, 3038404 4 - chargement de l'environnement d'exécution sécurisé associé à ladite machine virtuelle requérante dans ladite au moins une portion matérielle sécurisée allouée, - utilisation de la portion matérielle sécurisée allouée pour l'exécution 5 sécurisée de ladite suite d'instructions de l'application de la machine virtuelle requérante. Avantageusement, l'invention permet d'utiliser successivement des portions matérielles sécurisées des processeurs de dispositifs programmables interconnectés, par diverses machines virtuelles, de manière distribuée, tout en assurant le cloisonnement 10 matériel des exécutions. De plus, l'invention permet l'exploitation des portions sécurisées qui ne sont pas utilisées par les applications situées dans les portions matérielles de niveau de sécurité standard respectives au sein d'un même processeur. Le procédé d'exécution sécurisée de machines virtuelles selon l'invention peut présenter une ou plusieurs des caractéristiques ci-dessous, prises indépendamment ou 15 selon toutes combinaisons techniques acceptables : La portion matérielle sécurisée comprend des ressources mémoire et le procédé comporte, avant le chargement de l'environnement d'exécution sécurisé, une étape de nettoyage desdites ressources mémoire. La portion matérielle sécurisée comprend au moins un périphérique, et le procédé 20 comporte, avant le chargement de l'environnement d'exécution sécurisé, une étape de nettoyage de chaque périphérique. Le procédé comprend en outre un chiffrement de l'environnement d'exécution sécurisé après l'exécution sécurisée de ladite suite d'instructions de l'application de la machine virtuelle requérante, et une mémorisation de l'environnement d'exécution 25 sécurisé chiffré. Après la requête d'exécution sécurisée d'au moins une suite d'instructions d'une application, le procédé comprend au moins une étape d'évaluation de ressources matérielles nécessaires pour l'environnement d'exécution sécurisé associé à ladite machine virtuelle requérante, et de calcul d'un nombre de portions matérielles sécurisées 30 à allouer pour l'exécution de l'application sécurisée dans l'environnement d'exécution sécurisé associé. Après requête d'exécution sécurisée d'au moins une suite d'instructions d'une application, le procédé comprend une étape de calcul d'une priorité de séquencement d'exécution sécurisée des requêtes d'exécution. 35 L'évaluation de ressources matérielles comprend une évaluation de complexité de calcul et/ou de quantité de mémoire et/ou de nombre de coeurs d'exécution. 3038404 5 Le procédé comprend, pour une pluralité de requêtes d'exécution en provenance d'une pluralité de machines virtuelles requérantes, une mise en oeuvre distribuée d'un algorithme d'ordonnancement pour l'utilisation de groupes de portions matérielles sécurisées par les environnements d'exécution sécurisés associés aux machines 5 virtuelles requérantes. L'utilisation d'une portion matérielle sécurisée allouée pour l'exécution sécurisée d'au moins une instruction de l'application d'une première machine virtuelle requérante est exclusive, à un instant donné, de toute utilisation de ladite portion matérielle sécurisée pour l'exécution sécurisée d'au moins une instruction de l'application d'une deuxième 10 machine virtuelle requérante. Selon un autre aspect, l'invention propose un système d'exécution sécurisée de machines virtuelles par un ensemble de dispositifs programmables interconnectés, chaque dispositif programmable comportant au moins un processeur de calcul comportant un ou plusieurs coeurs, chaque dispositif programmable étant apte à exécuter 15 simultanément et/ou successivement des applications d'une pluralité de machines virtuelles, chaque processeur comportant une portion matérielle d'exécution de niveau de sécurité standard et une portion matérielle sécurisée de niveau de sécurité supérieur au niveau de sécurité standard, lesdites portions matérielles étant cloisonnées. Chaque processeur comporte des modules de micrologiciel de pilotage dudit 20 processeur et adaptés à: -mémoriser un environnement d'exécution sécurisé associé à chaque machine virtuelle, chaque environnement d'exécution sécurisé comportant au moins une instruction d'une application associée, -sur requête d'exécution sécurisée d'au moins une suite d'instructions d'une 25 application par une machine virtuelle requérante, - allouer à ladite exécution sécurisée au moins une portion matérielle sécurisée disponible appartenant à l'un des processeurs de l'ensemble de dispositifs programmables interconnectés, - charger l'environnement d'exécution sécurisé associé à ladite machine 30 virtuelle requérante dans ladite au moins une portion matérielle sécurisée allouée, - utiliser la portion matérielle sécurisée allouée pour l'exécution sécurisée de ladite suite d'instructions de l'application de la machine virtuelle requérante. 35 Selon un mode de réalisation, le système d'exécution sécurisée de machines virtuelles comporte des ressources mémoire partagées, et un module de chiffrement 3038404 6 apte à chiffrer l'environnement d'exécution sécurisé après l'exécution sécurisée de ladite au moins une instruction de l'application de la machine virtuelle requérante, et à sauvegarder l'environnement d'exécution sécurisé chiffré dans les ressources mémoire partagées. 5 Selon un autre aspect, l'invention concerne un produit programme d'ordinateur comportant des instructions de micrologiciel qui, lorsqu'elles sont mises en oeuvre par un ou plusieurs processeurs de calcul de dispositifs programmables, chaque processeur de calcul comportant un ou plusieurs coeurs, chaque dispositif programmable étant apte à exécuter simultanément et/ou successivement des applications d'une pluralité de 10 machines virtuelles, chaque processeur comportant une portion matérielle d'exécution de niveau de sécurité standard et une portion matérielle sécurisée de niveau de sécurité supérieur au niveau de sécurité standard, lesdites portions matérielles étant cloisonnées, mettent en oeuvre un procédé tel que brièvement décrit ci-dessus. D'autres caractéristiques et avantages de l'invention ressortiront de la description 15 qui en est donnée ci-dessous, à titre indicatif et nullement limitatif, en référence aux figures annexées, parmi lesquelles : -la figure 1 représente schématiquement un système centralisé de traitement de données ; - la figure 2 illustre schématiquement un mode de réalisation d'un processeur d'un 20 dispositif programmable dans un mode de réalisation de l'invention ; -la figure 3 illustre schématiquement un mode de réalisation avec dispositifs programmables interconnectés ; -la figure 4 est un organigramme des principales étapes d'un procédé d'exécution sécurisée de machines virtuelles selon un mode de réalisation de l'invention ; 25 -la figure 5 est un organigramme de mise en oeuvre de l'étape d'allocation distribuée de portions matérielles sécurisées selon un mode de réalisation de l'invention. L'invention sera décrite dans son application dans un système centralisé de traitement de données comportant des ensembles de dispositifs programmables 30 interconnectés, utilisables par une pluralité de machines virtuelles clientes. Néanmoins, l'invention n'est pas limitée à ce cas d'application, et trouve une application dans tout système d'exécution d'applications en provenance d'une pluralité de machines virtuelles. La figure 1 illustre schématiquement un système centralisé de traitement 2, 35 comprenant dans l'exemple deux ensembles 4, 6 de dispositifs programmables 10 interconnectés. Chaque dispositif programmable 10 comprend deux modules d'interface 3038404 7 de connexion réseau respectifs, notés 12 et 14, un premier module d'interface 12 permettant la connexion à un réseau de communication public 16 et un deuxième module d'interface 14 permettant la connexion à un réseau d'administration 18, permettant la mise en oeuvre de communications sécurisées. 5 Le réseau de communication public 16 est par exemple le réseau client des fournisseurs du système centralisé de traitement (ou cloud), permettant aux machines virtuelles de leurs clients de se connecter entre elles et avec le réseau de communication Internet. Dans une application de traitement centralisé de données, chacun des dispositifs 10 programmables 10 fonctionne en mode virtualisé, exécutant plusieurs machines virtuelles de clients différents. On parle d'occupation multiple ou « multi-tenancy » en anglais. Afin de permettre une exécution sécurisée d'applications par ces machines virtuelles, de préférence, chaque dispositif programmable est équipé d'un ou plusieurs processeurs, ayant un ou plusieurs coeurs de calcul, et permettant de réaliser une 15 exécution sécurisée matériellement. La figure 2 illustre un mode de réalisation préféré dans lequel chaque processeur 30 de dispositif programmable comporte deux portions matérielles distinctes 32 et 34 correspondant respectivement à la portion matérielle de niveau de sécurité standard et à la portion matérielle sécurisée. 20 La portion matérielle 32 est de niveau de sécurité standard, utilisé pour un fonctionnement classique. La portion matérielle 34 est une portion matérielle sécurisée, de niveau de sécurité supérieur au niveau de sécurité standard. Ces deux portions sont cloisonnées entre elles, et l'accès à la portion matérielle sécurisée 34 se fait par des requêtes 33, 35 dédiées. 25 Chacune des portions matérielles en lien avec leur mode d'exécution respectifs met en oeuvre plusieurs niveaux de privilège d'exécution : un niveau de privilège utilisateur (inférieur) EL0, et un ou plusieurs niveaux de privilège intermédiaires (EL, et EL2 dans notre exemple), pour l'exécution d'un système d'exploitation, de l'hyperviseur et enfin un niveau de privilège supérieur (EL3 dans notre exemple) pour le micrologiciel de 30 pilotage dans le mode sécurisé. Par exemple, dans le cas où le processeur utilisé est d'architecture ARM v8 ®, on dispose d'un niveau de privilège utilisateur ELO, dans les deux modes, d'un niveau de privilège supérieur EL1 dans les deux modes, pour l'exécution d'un système d'exploitation, un niveau de privilège supérieur EL2, seulement dans le mode standard 35 pour l'hyperviseur et un niveau de privilège maximum EL3, seulement dans le mode sécurisé. 3038404 8 Ainsi, des applications utilisateur 361 à 36, sont exécutées au niveau de privilège EL0, du mode standard, l'exécution étant supportée par un système d'exploitation et un environnement d'exécution. Dans l'exemple de la figure 2, plusieurs applications utilisateur APP, à APP, sont 5 considérées, ainsi que plusieurs systèmes d'exploitation OS, à 0S3, au niveau de privilège EL, du mode standard, chaque système d'exploitation étant associé à une machine virtuelle VM, à VM3. L'exécution des applications APP, à APP, des diverses machines virtuelles VM, à VM3 est gérée par un hyperviseur ou VMM (pour « Virtual Machine Monitor » en anglais), 10 noté 38 sur la figure 2, au niveau de privilège EL2 du mode standard. La portion matérielle sécurisée 34 est apte à mettre en oeuvre un environnement d'exécution sécurisé 40, appelé également TEE pour « Trusted Execution Environment », et à exécuter des applications 421 à 42, de manière cloisonnée, donc protégée par rapport à des tentatives de piratage éventuelles. 15 On parle d'exécution sécurisée et les applications 421 à 42, exécutées de manière sécurisée sont également appelées « trustlets ». Un environnement d'exécution sécurisé 40 comprend également un système d'exploitation sécurisé 44, de niveau de privilège EL,. En d'autres termes, un TEE comprend un système d'exploitation et un contexte 20 d'exécution d'une ou plusieurs applications à exécuter. La portion matérielle sécurisée 34 comprend un module de contrôle sécurisé 46, de niveau de privilège EL3 supérieur au niveau de privilège attribué au module 44, mettant en oeuvre des instructions de code micrologiciel de pilotage de la portion matérielle sécurisée. 25 Selon un mode de réalisation, le micrologiciel de pilotage mis en oeuvre par le module de contrôle sécurisé 46 est modifié par ajout d'instructions de code pour permettre, sur requête d'exécution sécurisée d'au moins une instruction d'une application APP, à APP,, d'une machine virtuelle requérante, une utilisation distribuée des portions matérielles sécurisées des processeurs des dispositifs programmables interconnectés. 30 La figure 2 illustre un seul dispositif programmable, mais la figure 3 illustre deux dispositifs programmables interconnectés. Le module de contrôle sécurisé 46 comprend un module 50 de réception et traitement des requêtes 33, 35 d'exécution sécurisée. Par exemple, dans l'exemple de la figure 2, une première requête 33 est 35 transmise, pour une exécution sécurisée de l'application APP, dans son environnement 3038404 9 d'exécution sécurisé TEE1, ainsi qu'une deuxième requête 35 pour une exécution sécurisée de l'application APP2dans son environnement d'exécution sécurisé TEE2. Le module de contrôle sécurisé 46 comprend également un module 52 apte à réaliser une sauvegarde, dans une zone de ressources mémoire partagées 60, d'un 5 environnement d'exécution sécurisé TEE, associé à une machine virtuelle VM, De préférence, les données de l'environnement d'exécution sécurisé sont chiffrées avant sauvegarde. Un module 54 d'allocation de portion matérielle sécurisée met en oeuvre l'allocation, à l'exécution sécurisée d'une application APPk dans un environnement TEE,, 10 d'au moins une portion matérielle sécurisée disponible appartenant à l'un des processeurs de l'ensemble de dispositifs programmables interconnectés. Un module 56 dit d'aseptisation effectue le nettoyage, en particulier la mise à zéro, des ressources matérielles de mémoire utilisées par la portion matérielle sécurisée pour l'exécution d'instructions de code, de manière à éviter toute possibilité de piratage due à 15 des exécutions successives d'instructions de code en provenance de machines virtuelles distinctes. De plus, d'autres ressources matérielles, ou périphériques, utilisés pour l'exécution des instructions de l'application APPk sont également nettoyées pour éviter tout risque de piratage. Un module 58 de chargement et d'exécution effectue le chargement en mémoire 20 vive RAM de l'environnement d'exécution sécurisé TEE, correspondant à la requête d'exécution reçue, et l'exécution sécurisée de l'application APPk. De préférence, les ressources matérielles de la portion matérielle sécurisée 34 sélectionnée sont utilisées de manière exclusive pour l'exécution d'une application donnée à un instant donné. 25 La figure 3 illustre schématiquement une mise en oeuvre de l'invention dans le contexte d'interconnexion de deux processeurs 30a, 30b de deux dispositifs programmables interconnectés. Pour simplifier la représentation, les ressources mémoire partagées n'ont pas été illustrées à nouveau dans la figure 3. Chacun des processeurs 30a, 30b comprend des éléments analogues aux 30 éléments précédemment décrits pour le processeur 30 de la figure 2. Comme illustré à la figure 3, le module de contrôle sécurisé 46a est apte à transmettre une requête 37 d'exécution sécurisée, via le module d'interface réseau 14a, à un module de contrôle 46b d'un autre processeur, qui est apte à le recevoir via le module d'interface réseau 14b. 35 Dans l'exemple, la requête 37 est une instruction d'exécution sécurisée de l'application APP3 dans un environnement d'exécution sécurisé TEE3 associé. 3038404 10 L'environnement d'exécution sécurisé TEE3 est déchiffré, chargé et exécuté par la portion matérielle sécurisée 34b. Les modules de contrôle sécurisé 46a, 46b mettent en oeuvre des mécanismes d'adressage et de routage des requêtes d'exécution sécurisée, chaque requête 5 d'exécution sécurisée étant transmise par une machine virtuelle exécutée par une portion matérielle 32a, 32b de niveau de sécurité standard. Ainsi, les modules de contrôle sécurisé respectifs 46a, 46b tels qu'ils sont fournis par les fabricants de processeurs sont modifiés pour permettre un traitement des requêtes 37 comprenant des instructions d'exécution par une portion matérielle sécurisée à 10 distance. Par conséquent, un fonctionnement distribué est obtenu. La figure 4 est un organigramme des principales étapes d'un procédé d'exécution de machines virtuelles par un ensemble de dispositifs programmables interconnectés selon un mode de réalisation de l'invention. Dans ce mode de réalisation, le procédé comprend une première étape 60 de 15 mémorisation d'au moins un environnement d'exécution sécurisé, noté TEE,, pour chaque machine virtuelle VM, s'exécutant sur une des portions matérielles standard de l'ensemble de dispositifs programmables du système. Comme mentionné ci-dessus, chaque TEE, comprend un système d'exploitation sécurisé et un contexte d'exécution d'au moins une application. 20 Les TEE, sont mémorisés, de préférence sous forme chiffrée, dans des ressources mémoire partagées par l'ensemble des processeurs interconnectés du système. De préférence, seuls les modules de contrôle sécurisés ont accès à ces ressources mémoire partagées formant un espace de sauvegarde. Une association entre chaque environnement d'exécution sécurisé et la machine 25 virtuelle et l'application à exécuter est mémorisée également. Lors de la réception 62 d'au moins une requête d'exécution sécurisée d'au moins une instruction Inst d'une application APPk par une machine virtuelle requérante VMJ, une étape 64 d'allocation d'au moins une portion matérielle sécurisée disponible appartenant à l'un des processeurs de l'ensemble de dispositifs programmables interconnectés est 30 mise en oeuvre. Plusieurs modes de réalisation de cette étape d'allocation sont envisagés et détaillés ci-après. Après l'étape d'allocation 64, une étape de nettoyage 66 des ressources mémoire et autres périphériques utilisés par la portion matérielle sécurisée allouée est mise en 35 oeuvre, afin d'augmenter la sécurité d'exécution de l'application à exécuter et des 3038404 11 applications précédemment exécutées. De tels autres périphériques incluent par exemple des ressources réseaux et des accélérateurs cryptographiques. En particulier, un effacement des ressources mémoire est mise en oeuvre lors de l'étape 66 lorsque la portion matérielle sécurisée est déjà allouée à un TEE. Cette étape 5 est précédée d'une sauvegarde chiffrée du contexte TEE, comme expliqué ci-après. L'étape de nettoyage est suivie d'une étape 68 de chargement en mémoire de l'environnement d'exécution sécurisé TEE,,k préalablement mémorisé, pour la machine virtuelle VM, et le contexte d'exécution de l'application APPk. Lorsque les environnements d'exécution sécurisés sont sauvegardés sous forme chiffrée, un déchiffrement est 10 appliqué avant chargement. L'étape de chargement 68 est suivie d'une étape 70 d'exécution sécurisée de l'instruction Inst de l'application APPk dans le TEELk. Il est à noter que dans une variante, plusieurs portions matérielles sécurisées sont allouées pour l'exécution de l'application APPk, comme cela serait, optionnellement, le 15 cas si l'application s'exécutait en mode sécurisé sur un processeur à plusieurs coeurs. Egalement, il est habituel d'allouer un ensemble de ressources mémoire, par exemple des mémoires tampon (ou « buffers » en anglais), pour les exécutions mises en oeuvre en mode matériel sécurisé qui serviront à communiquer avec la machine virtuelle cliente de ce TEE. C'est de cette façon que les applications sécurisées rendent des 20 résultats aux applications standard. Les mémoires tampon partagées sont accessibles à la fois par le mode normal et par le mode sécurisé, mais avec des droits d'accès de lecture et d'écriture différents. Lorsque les données, par exemple les TEE, sont sauvegardées sous forme chiffrée, elles peuvent être stockées dans des zones mémoire accessibles par le monde normal, de 25 niveau de sécurité standard. Lorsqu'une de ces mémoires tampon partagées est modifiée par l'exécution de l'application APPk, modifiant par conséquent le contexte associé à l'environnement d'exécution sécurisé TEE,,k, le contexte de la machine virtuelle VM, 'cliente' sera modifiée en conséquence pour permettre le partage qui aurait eu lieu si le TEE était resté dans le 30 même processeur, en mode synchrone ou asynchrone (option à choisir par le firmware). Une fois l'exécution terminée, une étape 72 de chiffrement et de mémorisation de l'environnement d'exécution sécurisé chiffré est mise en oeuvre. La figure 5 est un organigramme d'un mode de réalisation de l'étape 64 d'allocation d'une ou plusieurs portions matérielles sécurisées pour l'exécution sécurisée 35 et distribuée d'applications de machines virtuelles. 3038404 12 Dans ce mode de réalisation, après réception d'une requête d'exécution sécurisée d'au moins une instruction ou suite d'instructions Inst d'une application APPk par une machine virtuelle requérante VIVI], on met en oeuvre une étape 80 d'évaluation de ressources matérielles nécessaires pour l'environnement d'exécution sécurisé TEE, 5 associé à ladite machine virtuelle requérante VIVI,. En particulier, on évalue la complexité de calcul et/ou la quantité de mémoire et/ou le nombre de coeurs d'exécution nécessaires à ladite exécution sécurisée. L'étape 80 est suivie d'une étape 82 d'allocation d'un nombre de portions matérielles sécurisées et de ressources mémoire associées pour l'exécution d'une 10 instruction ou suite d'instructions Inst d'une application APPk par une machine virtuelle requérante VIVI,. L'étape 82 est suivie d'une étape 84 de calcul de priorité de séquencement d'exécution par les micrologiciels interconnectés des requêtes d'exécution à effectuer. En variante, l'étape 84 de calcul de priorité est effectuée avant l'étape 82 15 d'allocation de portions matérielles sécurisées, de sorte que les priorités calculées s'appliquent également à l'étape d'allocation. Dans le cas d'une pluralité de requêtes d'exécution en provenance d'une pluralité de machines virtuelles requérantes, reçues sensiblement en parallèle, l'étape 84 est suivie d'une étape 86 de mise en oeuvre distribuée d'un algorithme d'ordonnancement 20 pour l'utilisation des portions matérielles sécurisées par les environnements d'exécution sécurisés TEEi associés aux machines virtuelles requérantes. Le nombre de TEE, et leurs besoins en coeurs d'exécution est, dans certains cas, supérieur aux ressources d'exécution matérielle sécurisées disponibles. Divers mécanismes d'ordonnancement distribué sont connus, et applicables 25 aisément par un homme du métier pour l'ordonnancement et la répartition des TEE, sur des portions matérielles sécurisées. Par exemple, des mécanismes de tourniquet ou round-robin, ou un mécanisme BVT (pour « borrowed virtual time ») peuvent être appliqués. A des intervalles réguliers ou sur requête ou à l'occasion d'événements ou 30 interruptions, un ré-ordonnancement 88 est mis en oeuvre, permettant de ré-affecter des TEE, à d'autres portions matérielles sécurisées. De préférence, la collaboration entre les micrologiciels de pilotage des portions matérielle sécurisés des dispositifs programmables, que ce soit pour l'ordonnancement ou la gestion des évènements d'un environnement d'exécution sécurisé, est organisée par 35 un mécanisme simplifié de DHT (pour « Distributed Hash Table ») pour le partage distribué des informations d'allocations des portions matérielles sécurisées, des 3038404 13 évènements ou du temps CPU alloué à chacun des TEE,, ou , comme Chord ou Kadem lia. Une méthode d'ordonnancement collaborative pourra être choisie parmi celles citées dans la publication « Scheduling in Distributed Systems », de Dongning Liang et al, 5 accessible sur Internet à l'adresse suivante : http://cseweb.ucsd.edu/classes/sp99/cse221/projects/Scheduling.pdf Dans une autre variante moins avantageuse du point de vue de la sécurité et de la performance, l'invention peut ne comporter qu'un seul réseau partagé entre chaque processeur. Dans ce cas, les micrologiciels de pilotage communiquent de manière 10 chiffrée par exemple en VPN en utilisant le réseau du monde non sécurisé. REVENDICATIONS1.- Procédé d'exécution sécurisée de machines virtuelles par un ensemble de dispositifs programmables interconnectés, chaque dispositif programmable comportant au moins un processeur de calcul comportant un ou plusieurs coeurs, chaque dispositif programmable étant apte à exécuter simultanément et/ou successivement des applications d'une pluralité de machines virtuelles, chaque processeur comportant une portion matérielle d'exécution de niveau de sécurité standard et une portion matérielle sécurisée de niveau de sécurité supérieur au niveau de sécurité standard, lesdites portions matérielles étant cloisonnées, le procédé comportant des étapes de: -mémorisation (60) d'au moins un environnement d'exécution sécurisé (TEEi) associé à chaque machine virtuelle, chaque environnement d'exécution sécurisée comportant au moins une instruction d'une application associée, -sur requête d'exécution sécurisée d'au moins une suite d'instructions d'une application par une machine virtuelle requérante, - allocation (64) à ladite exécution sécurisée d'au moins une portion matérielle sécurisée disponible appartenant à l'un des processeurs de l'ensemble de dispositifs programmables interconnectés, - chargement (68) de l'environnement d'exécution sécurisé (TEEj) associé à ladite machine virtuelle requérante dans ladite au moins une portion matérielle sécurisée allouée, - utilisation (70) de la portion matérielle sécurisée allouée pour l'exécution sécurisée de ladite suite d'instructions de l'application de la machine virtuelle requérante. 2.- Procédé selon la revendication 1, dans lequel la portion matérielle sécurisée comprend des ressources mémoire, le procédé comportant, avant le chargement de l'environnement d'exécution sécurisé, une étape de nettoyage (66) desdites ressources 30 mémoire. 3.- Procédé selon la revendication 2, dans lequel la portion matérielle sécurisée comprend au moins un périphérique, le procédé comportant, avant le chargement de l'environnement d'exécution sécurisé, une étape de nettoyage (66) de chaque 35 périphérique. 3038404 15 4.- Procédé selon l'une quelconque des revendications 1 à 3, comprenant en outre un chiffrement (72) de l'environnement d'exécution sécurisé après l'exécution sécurisée de ladite suite d'instructions de l'application de la machine virtuelle requérante, et une mémorisation (72) de l'environnement d'exécution sécurisé chiffré. 5 5.- Procédé selon l'une quelconque des revendications 1 à 4, dans lequel, après la requête d'exécution sécurisée d'au moins une suite d'instructions d'une application, le procédé comprend au moins une étape d'évaluation (80) de ressources matérielles nécessaires pour l'environnement d'exécution sécurisé associé à ladite machine virtuelle 10 requérante, et de calcul d'un nombre de portions matérielles sécurisées à allouer pour l'exécution de l'application sécurisée dans l'environnement d'exécution sécurisé associé. 6.- Procédé selon l'une quelconque des revendications 1 à 5, dans lequel, après la requête d'exécution sécurisée d'au moins une suite d'instructions d'une application, le 15 procédé comprend une étape de calcul d'une priorité (84) de séquencement d'exécution sécurisée des requêtes d'exécution. 7.- Procédé selon la revendication 5, dans lequel l'évaluation de ressources matérielles comprend une évaluation de complexité de calcul et/ou de quantité de 20 mémoire et/ou de nombre de coeurs d'exécution. 8.- Procédé selon l'une quelconque des revendications 1 à 7, comprenant, pour une pluralité de requêtes d'exécution en provenance d'une pluralité de machines virtuelles requérantes, une mise en oeuvre distribuée (86) d'un algorithme 25 d'ordonnancement pour l'utilisation de groupes de portions matérielles sécurisées par les environnements d'exécution sécurisés associés aux machines virtuelles requérantes. 9.- Procédé selon l'une quelconque des revendications 1 à 8, dans lequel l'utilisation d'une portion matérielle sécurisée allouée pour l'exécution sécurisée d'au moins une instruction de l'application d'une première machine virtuelle requérante est exclusive, à un instant donné, de toute utilisation de ladite portion matérielle sécurisée pour l'exécution sécurisée d'au moins une instruction de l'application d'une deuxième machine virtuelle requérante. 10.- Système d'exécution sécurisée de machines virtuelles par un ensemble de dispositifs programmables interconnectés, chaque dispositif programmable comportant au 3038404 16 moins un processeur de calcul comportant un ou plusieurs coeurs, chaque dispositif programmable étant apte à exécuter simultanément et/ou successivement des applications d'une pluralité de machines virtuelles, chaque processeur comportant une portion matérielle d'exécution de niveau de 5 sécurité standard et une portion matérielle sécurisée de niveau de sécurité supérieur au niveau de sécurité standard, lesdites portions matérielles étant cloisonnées, chaque processeur comportant des modules de micrologiciel de pilotage dudit processeur et adaptés à: -mémoriser (52) un environnement d'exécution sécurisé associé à chaque 10 machine virtuelle, chaque environnement d'exécution sécurisée comportant au moins une instruction d'une application associée, -sur requête d'exécution sécurisée d'au moins une suite d'instructions d'une application par une machine virtuelle requérante, - allouer (54) à ladite exécution sécurisée au moins une portion matérielle 15 sécurisée disponible appartenant à l'un des processeurs de l'ensemble de dispositifs programmables interconnectés, - charger (58) l'environnement d'exécution sécurisée associé à ladite machine virtuelle requérante dans ladite au moins une portion matérielle sécurisée allouée, 20 - utiliser (58) la portion matérielle sécurisée allouée pour l'exécution sécurisée de ladite suite d'instructions de l'application de la machine virtuelle requérante. 11.- Système d'exécution sécurisée de machines virtuelles selon la revendication 25 10, comportant des ressources mémoire partagées, le système comportant un module de chiffrement apte à chiffrer l'environnement d'exécution sécurisé après l'exécution sécurisée de ladite au moins une instruction de l'application de la machine virtuelle requérante, et à sauvegarder l'environnement d'exécution sécurisé chiffré dans les ressources mémoire partagées. 30 12.- Produit programme d'ordinateur comportant des instructions de micrologiciel qui, lorsqu'elles sont mises en oeuvre par un ou plusieurs processeurs de calcul de dispositifs programmables, chaque processeur de calcul comportant un ou plusieurs coeurs, chaque dispositif programmable étant apte à exécuter simultanément et/ou 35 successivement des applications d'une pluralité de machines virtuelles, chaque processeur comportant une portion matérielle d'exécution de niveau de sécurité standard 3038404 17 et une portion matérielle sécurisée de niveau de sécurité supérieur au niveau de sécurité standard, lesdites portions matérielles étant cloisonnées, mettent en oeuvre un procédé selon l'une quelconque des revendications 1 à 9. 5