Brevet FR3145427A1 — publié le 20240802

PROCEDE MIS EN ŒUVRE PAR ORDINATEUR POUR FAIRE INTERAGIT PLUSIEURS RESSOURCES DE FACON SURE ET SECURISEE L’invention concerne un procédé mis en œuvre par ordinateur pour exécuter une tâche de travail (T) de manière sécurisée, sur requête d’une partie requérante (P1) comprenant une première ressource (R1), ladite tâche de travail (T) nécessitant d’accéder à une deuxième ressource disponible au sein d’une partie exécutante (P2) distante de la partie requérante (P1) et étant caractérisée par une infrastructure, et nécessitant une interaction entre ladite première ressource (R1) et ladite deuxième ressource (R2). Figure de l’abrégé : Fig. 6 PROCEDE MIS EN ŒUVRE PAR ORDINATEUR POUR FAIRE INTERAGIR PLUSIEURS RESSOURCES DE FACON SURE ET SECURISEE DOMAINE DE L’INVENTION La présente invention se situe dans le domaine de l’informatique confidentielle. Plus précisément, la présente invention concerne un procédé mis en œuvre par ordinateur pour exécuter une tâche de travail de manière sécurisée. ÉTAT DE LA TECHNIQUE Le terme « informatique confidentielle », en anglais « confidential computing », est un terme spécialisé du Confidential Computing Consortium (CCC), une fondation dédiée à la définition de l’informatique confidentielle et à l’accélération de son adoption. Le CCC définit l’informatique confidentielle comme étant la protection des données utilisées en effectuant des traitements dans un environnement d’exécution de confiance sécurisé (en anglais : TEE, Trusted Execution Environment) matériel. Un TEE est un environnement dans lequel seul un code autorisé est exécuté. Aucune donnée dans le TEE ne peut être lue ou falsifiée par du code en dehors de cet environnement. L’informatique confidentielle permet notamment de chiffrer des ressources comme par exemple des données et/ou du code en cours d’utilisation, en protégeant des jeux de données sensibles. L‘informatique confidentielle peut s’appliquer à différents cas d’usage pour la protection des données et codes informatiques utilisés dans des secteurs tels que le secteur public, les services financiers, ou encore la santé. Des exemples d’application de l’informatique confidentielle sont les suivants. Il existe par exemple des systèmes d’apprentissage automatique à confidentialité multipartite possédant un environnement d’exécution de confiance où un chargeur de code charge le code d’apprentissage automatique, reçu d’au moins une des parties, dans une mémoire protégée de l’environnement d’exécution. Un chargeur de données télécharge des données confidentielles, reçues d'au moins une des parties, dans une région de la mémoire protégée. L'environnement d'exécution de confiance sécurisé exécute le code d'apprentissage machine en utilisant au moins une procédure ignorant les données pour traiter les données confidentielles. Il est par exemple connu également un procédé mis en œuvre par ordinateur comprenant les étapes suivantes : la réception d'un algorithme et de critères de données d'entrée associées à l'algorithme, l'identification de ressources de données comme étant disponibles à partir d'un hôte de données, la conservation des ressources de données dans une structure de stockage de données qui est dans l'infrastructure de l'hôte de données, et l'intégration de l'algorithme dans un cadre informatique sécurisé de type TEE. Le cadre informatique sécurisé du TEE rend l'algorithme disponible pour traiter les données dans la structure de stockage de données d'une manière sécurisée en préservant la confidentialité à la fois des données et de l'algorithme. Bien souvent, lors d’une transaction informatique entre deux parties, il est fait appel à un tiers de confiance pour effectuer des opérations de sécurité d'authentification, de transmission et de stockage. Par exemple, un tel tiers de confiance permet d’obtenir une protection automatique via un certificat informatique, dit aussi électronique, lors des échanges sur internet (sécurisation des pages web, des courriers, des fichiers exécutables). L’invention vise à proposer une solution d’informatique confidentielle permettant d’exécuter des transactions sécurisées entre deux parties sans faire appel à un tiers de confiance, quel que soit le degré de confiance mutuelle entre les deux parties et notamment lorsque les données et ressources interagissant ensemble présentent un haut degré de confidentialité. RÉSUMÉ Un premier aspect de l’invention concerne un procédé mis en œuvre par ordinateur pour exécuter une tâche de travail de manière sécurisée, sur requête d’une partie requérante comprenant une première ressource, ladite tâche nécessitant d’accéder à une deuxième ressource disponible au sein d’une partie exécutante distante de la partie requérante et étant caractérisée par une infrastructure, et nécessitant une interaction entre ladite première ressource et ladite deuxième ressource, le procédé comprenant les étapes suivantes : – chiffrer, lors d’un premier chiffrement et au moyen d’une première clé de chiffrement, par la partie requérante, ladite première ressource ; - envoyer, par la partie requérante, une requête d’initialisation accompagnée de résultats d’une fonction de hashage de la première ressource, chiffrés avec la première clé de chiffrement, à la partie exécutante ; – créer, par la partie exécutante, au moins une enclave sécurisée dans un espace dédié au sein de l’infrastructure sécurisée de ladite partie exécutante ; - envoyer, par la partie exécutante, depuis une parmi la au moins une enclave sécurisée, une deuxième clé de chiffrement, à la partie requérante, et stocker, par la partie exécutante, ladite deuxième clé de chiffrement dans une zone de mémoire sécurisée accessible par chaque enclave sécurisée parmi la au moins une enclave sécurisée ; – chiffrer, lors d’un deuxième chiffrement, par la partie requérante, la première ressource chiffrée et la première clé de chiffrement en utilisant ladite deuxième clé de chiffrement ; – envoyer, par la partie requérante, une requête et des données dites données d’exécution, lesdites données d’exécution comprenant la première ressource doublement chiffrée et la première clé de chiffrement chiffrée, à la partie exécutante ; – déchiffrer, par la partie exécutante, dans une parmi la au moins une enclave sécurisée, la première ressource et la première clé de chiffrement à l’aide de la deuxième clé de chiffrement ; déchiffrer, à l’aide de la première clé de chiffrement précédemment déchiffrée, la première ressource précédemment déchiffrée ; déchiffrer, par la partie exécutante, les résultats chiffrés de la fonction de hashage de la première ressource à l’aide de la première clé de chiffrement, puis comparer lesdits résultats déchiffrés avec des résultats d’une fonction de hashage de la première ressource doublement chiffrée ; stocker, par la partie exécutante, la première ressource doublement déchiffrée dans une zone de mémoire sécurisée accessible par chaque enclave sécurisée parmi la au moins une enclave sécurisée ; exécuter, par la partie exécutante, ladite tâche de travail dans une parmi la au moins une enclave sécurisée dite enclave d’exécution, par interaction de la première ressource déchiffrée avec la deuxième ressource; – générer, par un module de génération, un rapport de résultat relatif à ladite tâche de travail exécutée ; – envoyer, depuis l’enclave d’exécution, ledit rapport de résultat à la partie requérante. Tout au long du procédé, la partie exécutante permet à la partie requérante d’obtenir des attestations relatives à l’intégrité et la sécurité de la au moins une enclave sécurisée créée dans l’espace dédié au sein de l’infrastructure de ladite partie exécutante. Par exemple, la deuxième ressource présente un haut degré de confidentialité. Ainsi, la tâche de travail étant exécutée à l’intérieur d’une enclave sécurisée, elle est réalisée en confiance dans un environnement réputé hostile en s’assurant que la deuxième ressource et que la première ressource restent inaccessibles à tout le monde. Par ailleurs, par un mécanisme de double chiffrement, le procédé selon l’invention permet à la partie requérante de s’assurer que même la partie exécutante ne pourra accéder à la ressource qu’elle envoie. Aussi, aucun tiers de confiance n’intervient dans le procédé. La partie requérante et la partie exécutante interagissent sous forme d’un système autonome. Avantageusement, la requête d’initialisation est envoyée depuis un emplacement extérieur audit espace dédié au sein de l’infrastructure de la partie exécutante. Cette configuration permet ainsi que seules les données soient injectées dans la ou les enclaves sécurisées, de sorte à renforcer le degré de sécurité de celles-ci. Avantageusement, lorsque la au moins une enclave sécurisée comprend au moins deux enclaves sécurisées, les enclaves sécurisées de l’au moins une enclave sécurisée sont créées simultanément ou séquentiellement durant le procédé. Les enclaves sécurisées peuvent communiquer entre elles par des canaux chiffrés et prouver leur intégrité et leur capacité à interagir en échangeant des attestations. Avantageusement, la première ressource, une fois envoyée par la partie requérante à la partie exécutante, est stockée dans une première mémoire dédiée et encryptée (ou sécurisée) gérée par la au moins une enclave sécurisée et la deuxième ressource est stockée dans une deuxième mémoire dédiée sécurisée également gérée par la au moins une enclave sécurisée. Cette configuration présente l’avantage de permettre à la au moins une enclave sécurisée d’accéder à un volume accru de données. En particulier, il est permis un plus large éventail de tailles pour la première ressource et la deuxième ressource par rapport à une configuration où celles-ci seraient stockées directement à l’intérieur des enclaves sécurisées. Par ailleurs, cette configuration permet d’exécuter la tâche de travail en continu et en temps réel. Avantageusement, le procédé comprend, après la génération du rapport de résultat, une étape de destruction, par la partie exécutante, de la au moins une enclave sécurisée. Avantageusement, la partie requérante peut requérir, à toute étape du procédé, une attestation émise par un module dit module d’attestation, ladite attestation comprenant des données représentatives d’un degré de fiabilité d’une parmi la au moins une enclave sécurisée. Cette étape supplémentaire permet de renforcer la confiance de la partie requérante dans la partie exécutante. Avantageusement, la première ressource est un conteneur contenant un code informatique. Avantageusement, la première ressource est un code informatique à exécuter, la deuxième ressource comprend des données sur lesquelles ledit code informatique est configuré à être exécuté, et la deuxième ressource est mise à disposition à la première ressource via un algorithme de type « push ». Avantageusement, la première ressource est un code informatique à exécuter, la deuxième ressource comprend des données sur lesquelles ledit code informatique est configuré à être exécuté, et la première ressource accède à la deuxième ressource via un mécanisme de type « pull » en utilisant un chemin d’accès vers la deuxième ressource rendu disponible lors de la création d’une parmi la au moins une enclave sécurisée. Avantageusement, l’une parmi la première ressource et la deuxième ressource comprend un premier code informatique, l’autre ressource comprenant des premières données, la ressource comprenant le premier code informatique comprenant en outre optionnellement des deuxièmes données, et le premier code informatique étant configuré pour être exécuté sur les premières données et les deuxièmes données. Avantageusement, la première ressource et la deuxième ressource comprennent chacune respectivement un premier code informatique et un deuxième code informatique configurés pour interagir l’un avec l’autre, la première ressource et la deuxième ressource comprenant chacune en outre optionnellement respectivement des premières données et des deuxièmes données, le premier code informatique et le deuxième code informatique étant configurés pour être exécutés sur les premières données et/ou les deuxièmes données. Avantageusement, la première ressource comprend des données, la deuxième ressource est un code informatique à exécuter configuré pour être exécuté sur les données de la première ressource. Avantageusement, la première ressource comprend des données et du code, la seconde ressource est un code informatique à exécuter configuré pour être exécuté sur les données et le code de la première ressource. Avantageusement, la seconde ressource comprend des données et du code, la première ressource est un code informatique à exécuter configuré pour être exécuté sur les données et le code de la seconde ressource. Avantageusement, la première ressource comprend du code, la seconde ressource est un code informatique à exécuter configuré pour être exécuté sur le code de la première ressource. Avantageusement, la seconde ressource comprend du code, la première ressource est un code informatique à exécuter configuré pour être exécuté sur le code de la seconde ressource. Un deuxième aspect de l’invention porte sur un système comprenant un premier dispositif informatique comprenant un premier circuit et un deuxième dispositif informatique distinct du premier dispositif informatique, comprenant un deuxième circuit, ledit premier circuit et ledit deuxième circuit étant configurés pour mettre en œuvre des étapes du procédé tel que décrit précédemment. DESCRIPTION DES FIGURES est un exemple de schéma montrant différents composants d’une partie requérante configurée pour implémenter un procédé d’exécution d’une tâche de travail selon un ou plusieurs modes de réalisation. est un autre exemple de schéma montrant différents modules de la partie requérante illustrée à la . est un exemple de schéma montrant différents composants d’une partie exécutante configurée pour implémenter un procédé d’exécution d’une tâche de travail selon un ou plusieurs modes de réalisation. est un autre exemple de schéma montrant différents modules de la partie exécutante illustrée à la . représente un exemple d’ordinogramme représentant les étapes d’un procédé pour exécuter une tâche de travail, selon un ou plusieurs modes de réalisation. représente un exemple d’étapes mises en œuvre pour l’exécution d’une tâche de travail, selon un ou plusieurs modes de réalisation. DESCRIPTION DÉTAILLÉE La présente invention concerne un procédé 100 mis en œuvre par ordinateur, illustré à la , pour exécuter une tâche de travail T de manière sécurisée, sur requête d’une partie requérante P1 comprenant une première ressource R1, ladite tâche de travail T nécessitant d’accéder à une deuxième ressource disponible au sein d’une partie exécutante P2 distante de la partie requérante P1, ainsi qu’une interaction entre ladite première ressource R1 et ladite deuxième ressource. La partie requérante P1 et la partie exécutante P2 peuvent être respectivement deux dispositifs distincts comme décrits ci-après. La partie requérante P1 peut être mise en œuvre en tant que dispositif matériel unique, par exemple sous la forme d'un ordinateur personnel de bureau (PC), d'un ordinateur portable, d'un assistant numérique personnel (PDA), d'un téléphone intelligent, d'un serveur, d'une console ou peut être mis en œuvre sur des dispositifs matériels interconnectés séparés interconnectés par un ou plusieurs liens de communication, avec des segments câblés et/ou sans fil. Le partie requérante P1 peut par exemple être en communication avec un ou plusieurs systèmes informatiques en nuage, un ou plusieurs serveurs ou dispositifs distants pour mettre en œuvre les fonctions décrites dans le présent document pour le dispositif concerné. La partie requérante P1 peut également être mise en œuvre elle-même en tant que système informatique en nuage. Comme illustré sur la , la partie requérante P1 peut comprendre au moins un processeur 110 configuré pour accéder à au moins une mémoire 120 comprenant un code de programme informatique 170. Le code de programme informatique peut comprendre des instructions configurées pour amener la partie requérante P1 à exécuter une ou plusieurs ou toutes les étapes d'un ou plusieurs procédés décrits ici. Le processeur 110 peut ainsi être configuré pour stocker, lire, charger, interpréter, exécuter et/ou traiter autrement le code de programme informatique 170 stocké dans la mémoire 120 de sorte que, lorsque les instructions codées dans le code de programme informatique sont exécutées par le au moins un processeur 110, la partie requérante P1 exécute une ou plusieurs étapes d'un ou plusieurs procédés décrits ici. Le processeur 110 peut être n'importe quel microprocesseur, microcontrôleur, circuit intégré ou unité centrale de traitement (CPU) approprié comprenant au moins un processeur ou noyau de traitement basé sur le matériel. La mémoire 120 peut comprendre une mémoire vive (RAM), une mémoire cache, une mémoire non volatile, une mémoire de sauvegarde (par exemple, des mémoires programmables ou flash), une mémoire morte (ROM), un disque dur (HDD), un disque à état solide (SSD) ou toute combinaison de ceux-ci. La ROM de la mémoire 120 peut être configurée pour stocker, entre autres, un système d'exploitation de la partie requérante P1 et/ou un ou plusieurs codes de programmes informatiques d'une ou plusieurs applications logicielles. La RAM de la mémoire 120 peut être utilisée par le processeur 110 pour le stockage temporaire de données. La partie requérante P1 peut en outre comprendre une ou plusieurs interfaces de communication 140 (par exemple des interfaces réseau pour l'accès à un réseau câblé / sans fil, notamment une interface Ethernet, une interface WIFI, des interfaces USB, etc.) configurées pour communiquer via le réseau et/ou avec un ou plusieurs dispositifs périphériques. La partie requérante peut comprendre d'autres matériels associés tels que des interfaces utilisateurs comme une interface de rendu visuel 2D 130, ou toutes autres interfaces (par exemple clavier, souris, écran d'affichage, etc…) connectées via une ou plusieurs interfaces de communication appropriées (140) avec le processeur. La partie requérante P1 peut également comprendre un lecteur de support 150 pour lire un support de stockage externe lisible par ordinateur. Le processeur 110 est connecté à chacun des autres composants afin d'en commander le fonctionnement. Comme illustré sur la , la partie requérante P1 peut contenir un ou plusieurs modules dédiés qui seront décrits par la suite. Similairement, la partie exécutante P2 peut être mise en œuvre en tant que dispositif matériel unique, par exemple sous la forme d'un ordinateur personnel de bureau (PC), d'un ordinateur portable, d'un assistant numérique personnel (PDA), d'un téléphone intelligent, d'un serveur, d'une console ou peut être mis en œuvre sur des dispositifs matériels interconnectés séparés interconnectés par un ou plusieurs liens de communication, avec des segments câblés et/ou sans fil. La partie exécutante P2 peut par exemple être en communication avec un ou plusieurs systèmes informatiques en nuage, un ou plusieurs serveurs ou dispositifs distants pour mettre en œuvre les fonctions décrites dans le présent document pour le dispositif concerné. La partie exécutante P2 peut également être mise en œuvre elle-même en tant que système informatique en nuage. Comme illustré sur la , la partie exécutante P2 peut comprendre au moins un processeur 210 configuré pour accéder à au moins une mémoire 220 comprenant un code de programme informatique 270. Le code de programme informatique peut comprendre des instructions configurées pour amener la partie exécutante P2 à exécuter une ou plusieurs ou toutes les étapes d'un ou plusieurs procédés décrits dans le présent document. Le processeur 210 peut ainsi être configuré pour stocker, lire, charger, interpréter, exécuter et/ou traiter autrement le code de programme informatique 270 stocké dans la mémoire 220 de sorte que, lorsque les instructions codées dans le code de programme informatique sont exécutées par le au moins un processeur 210, la partie exécutante P2 exécute une ou plusieurs étapes d'un ou plusieurs procédés décrits ici. Le processeur 210 peut être n'importe quel microprocesseur, microcontrôleur, circuit intégré ou unité centrale de traitement (CPU) approprié comprenant au moins un processeur ou noyau de traitement basé sur le matériel. La mémoire 220 peut comprendre une mémoire vive (RAM), une mémoire cache, une mémoire non volatile, une mémoire de sauvegarde (par exemple, des mémoires programmables ou flash), une mémoire morte (ROM), un disque dur (HDD), un disque à état solide (SSD) ou toute combinaison de ceux-ci. La ROM de la mémoire 220 peut être configurée pour stocker, entre autres, un système d'exploitation de la partie exécutante P2 et/ou un ou plusieurs codes de programmes informatiques d'une ou plusieurs applications logicielles. La RAM de la mémoire 220 peut être utilisée par le processeur 210 pour le stockage temporaire de données. La partie exécutante P2 peut en outre comprendre une ou plusieurs interfaces de communication 240 (par exemple des interfaces réseau pour l'accès à un réseau câblé / sans fil, notamment une interface Ethernet, une interface WIFI, des interfaces USB, etc.) configurées pour communiquer via le réseau et/ou avec un ou plusieurs dispositifs périphériques. La partie requérante peut comprendre d'autres matériels associés tels que des interfaces utilisateurs comme une interface de rendu visuel 2D 230, ou toutes autres interfaces (par exemple clavier, souris, écran d'affichage, etc…) connectées via une ou plusieurs interfaces de communication appropriées 240 avec le processeur. La partie requérante P1 peut également comprendre un lecteur de support 250 pour lire un support de stockage externe lisible par ordinateur. Le processeur 210 est connecté à chacun des autres composants afin d'en commander le fonctionnement. Plus particulièrement, la partie exécutante P2 présente une partie matérielle capable de déployer un ou plusieurs environnements d’exécution de confiance sécurisés (TEE). Pour donner un exemple concret, la partie exécutante peut comprendre typiquement une puce Intel supportant l’extension SGX. Comme illustré sur la , la partie exécutante P2 peut contenir un ou plusieurs modules dédiés qui seront décrits par la suite. Dans la présente description, la partie requérante P1 souhaite réaliser une tâche de travail T de manière sécurisée, sur la base d’une première ressource R1 qu’elle possède. La tâche de travail nécessite une interaction entre la première ressource R1 et une deuxième ressource dont la partie requérante P1 sait qu’elle est disponible au sein de la partie exécutante P2, distincte et distante de la partie requérante P1. Par exemple, la première ressource R1 est un code informatique que la partie requérante souhaite exécuter sur un ensemble de données, sous forme d’une base de données, formant la deuxième ressource. Le descriptif de la deuxième ressource peut par exemple figurer dans un catalogue mis à disposition par la partie exécutante P2. Pour la réalisation de la tâche de travail T, le procédé 100 selon l’invention va être mis en œuvre. La est un ordinogramme représentant les principales étapes du procédé 100. On suppose que la partie requérante P1 a identifié la partie exécutante P2 comme partie d’intérêt pour la réalisation de la tâche de travail T. La partie requérante P1 communique avec la partie exécutante P2 via des connections sécurisées, par exemple chiffrées par chiffrement TLS. Dans une étape E0, un module de chiffrement/déchiffrement 11 de la partie requérante P1 chiffre au moyen d’une première clé de chiffrement la première ressource R1, afin d’obtenir une première ressource chiffrée. Tout type de chiffrement peut être utilisé, comme par exemple les algorithmes RSA ou ECC. La partie requérante P1 applique une fonction de hashage à la première ressource R1 afin d’obtenir un hash. Optionnellement, la partie requérante P1 applique la fonction de hashage également à la première clé de chiffrement, afin d’obtenir un autre hash. Les hashs sont alors chiffrés au moyen de la première clé de chiffrement. Dans une étape E1, la partie requérante P1 envoie une requête d’initialisation accompagnée des hashs chiffrés, obtenus à l’étape E0, à la partie exécutante P2, via une interface de programmation (API) ou une interface web. Dans une étape E2, après réception de la requête d’initialisation, un gestionnaire d’exécution 21 de la partie exécutante P2 génère au moins un espace d’exécution sécurisé (TEE) 22, autrement appelé enclave sécurisée. Lorsque la au moins une enclave sécurisée 22 comprend au moins deux enclaves sécurisées, ces dernières peuvent être créées simultanément ou séquentiellement au fur et à mesure de la mise en œuvre du procédé 100. Dans la suite, chaque enclave sécurisée créée pour les besoins du procédé 100 par la partie exécutante P2 sera nommée enclave sécurisée 22. Par ailleurs, lorsque la au moins une enclave sécurisée 22 comprend au moins deux enclaves sécurisées 22, ces dernières peuvent communiquer entre elles lorsqu’elles interagissent (lors d’échange ou l’utilisation de ressources). Lorsque deux enclaves sécurisées communiquent entre elles, celles-ci échangent des attestations afin de prouver leur intégrité et leur légitimité à interagir ensemble. Lors de cette étape E2, si la au moins une enclave sécurisée 22 comprend une unique enclave sécurisée, le gestionnaire d’exécution 21 peut injecter au moment de la génération de la au moins une enclave sécurisée 22, la deuxième ressource R2 dans cette enclave sécurisée 22, ou alternativement un pointeur, tel qu’une adresse, indiquant l’emplacement d’une mémoire sécurisée 23, dans l’infrastructure de la partie exécutante P2, et gérée par la au moins une enclave sécurisée 22, où la deuxième ressource R2 est disponible. En effet, l’interaction entre la première ressource R1 et la deuxième ressource R2, pour l'exécution de la tâche de travail T, aura lieu dans cette unique enclave sécurisée. D’autres manières d’accéder à la deuxième ressource R2 pendant l’exécution de la tâche de travail T, lorsque la au moins une enclave sécurisée 22 comprend au moins deux enclaves sécurisées, seront décrites par la suite. Dans une étape E3, la partie exécutante P2 génère, depuis une enclave sécurisée parmi la au moins une enclave sécurisée 22, une deuxième clé de chiffrement et l’envoie à la partie requérante P1. L’enclave sécurisée utilisée peut être celle utilisée à l’étape E2, ou une autre enclave sécurisée. La deuxième clé de chiffrement est stockée dans une mémoire dédiée sécurisée et gérée par la au moins une enclave sécurisée générée par la partie exécutante P2. Lorsque la au moins une enclave sécurisée 22 comprend au moins deux enclaves sécurisées, la mémoire dédiée sécurisée 24 est partagée entre les enclaves sécurisées 22. Dans une étape E4, après réception de la deuxième clé de chiffrement, le module de chiffrement/déchiffrement 11 chiffre la première ressource chiffrée au moyen de la deuxième clé de chiffrement. Le module de chiffrement/déchiffrement chiffre également la première clé de chiffrement au moyen de la deuxième clé de chiffrement. Tout type de chiffrement peut être utilisé comme par exemple les algorithmes RSA ou ECC. Dans une étape E5, la partie requérante P1 envoie la première ressource doublement chiffrée ainsi que la première clé de chiffrement chiffrée à la partie exécutante P2. La première ressource R1 est par exemple envoyée directement dans l’une parmi la au moins une enclave sécurisée 22 précédemment utilisées aux étapes E2, E3 et E4, ou dans une autre enclave sécurisée 22 créée par la partie exécutante P2 à cet effet. Alternativement, la première ressource R1 est transmise dans la mémoire dédiée sécurisée 24 gérée par la au moins une enclave sécurisée 22. Dans une étape E6, un module de déchiffrement, au sein d’une enclave sécurisée parmi la au moins une enclave sécurisée 22 créée par la partie exécutante P2 à cet effet, déchiffre la première clé de chiffrement chiffrée au moyen de la deuxième clé de chiffrement. Le module de déchiffrement déchiffre la première ressource doublement chiffrée au moyen de la deuxième clé de chiffrement puis de la première clé de chiffrement déchiffrée. Dans une étape E7, un module de hashage réalise le hash de la première ressource R1 et de la première clé de chiffrement et compare les résultats obtenus avec les hashs envoyés par la partie requérante P1 lors de l'étape E1. Si la comparaison est positive, la première ressource R1 ainsi déchiffrée est stockée dans la mémoire dédiée sécurisée 24 partagée par les enclaves sécurisées 22. Alternativement, la première ressource R1 pourra être injectée en même temps que la deuxième ressource R2 dans une enclave sécurisée 22 dans laquelle la première ressource R1 et la deuxième ressource R2 interagiront. Dans une étape E8, la tâche de travail T est exécutée par interaction de la première ressource déchiffrée R1 avec la deuxième ressource R2. Par exemple, la première ressource R1 est un code à exécuter sur des données et la deuxième ressource est constituée de données dites données effectives sur lesquelles le code à exécuter doit être exécuté. Lorsque la au moins une enclave sécurisée 22 ne contient qu’une unique enclave sécurisée 22, la deuxième ressource R2 peut être injectée dans l’enclave sécurisée 22 lors de la création de cette dernière à l’étape E2. Alternativement, un pointeur vers l’emplacement de la deuxième ressource au sein de l’infrastructure de la partie exécutante P2 permet d’accéder à la deuxième ressource. Dans encore une autre option, la deuxième ressource R2 peut être injectée à la volée dans une mémoire 23 dédiée sécurisée gérée par la au moins une enclave sécurisée 22. Dans encore une autre option, lorsque la deuxième ressource R2 est de type données, et que la première ressource R1 est de type code à exécuter, la deuxième ressource R2 peut être poussée (en anglais « push ») vers la première ressource R1 par un logiciel utilitaire accessible depuis l’une parmi la au moins une enclave sécurisée 22. Dans encore un autre exemple, la première ressource R1 comprend des données et la deuxième ressource R2 comprend un code à exécuter. L’enclave sécurisée au sein de laquelle la tâche de travail T est exécutée est dénommée par la suite enclave d’exécution. Dans encore un autre exemple, lorsque la deuxième ressource R2 est de type données et située dans une enclave spécifique parmi la au moins une enclave sécurisée 22 différente de l'enclave d'exécution, il peut être accédé à la deuxième ressource R2, via une API ou une interface Web située dans l’enclave spécifique en mode « pull », ou via une API ou un serveur Web situés dans l’enclave d’exécution en mode « push ». Ainsi, avantageusement, la partie requérante P1 n’a pas directement accès à la deuxième ressource, laquelle reste confidentielle. De même, la première ressource R1 étant déchiffrée au sein de l’enclave sécurisée 22, la partie exécutante P2 n’a pas directement accès à la première ressource R1. Ainsi, la partie exécutante P1 n’a pas connaissance de l’utilisation que la partie requérante P1 souhaite faire de la deuxième ressource. Dans une étape E9, lorsque la tâche de travail T est terminée, un module dit module de génération rassemble les résultats de la tâche de travail T en générant un rapport de résultats dans l’enclave d’exécution. Par exemple, le code informatique qui servira à la génération du rapport de résultats peut être injecté dans l’enclave d’exécution lors de la création de cette dernière. Alternativement, la partie requérante R1 peut envoyer le code informatique qui servira à la génération du rapport de résultat. En fonction du type de la requête d’initialisation, le rapport de résultats peut ne pas être généré de manière synchrone. Ainsi, par exemple, la partie requérante P1 peut périodiquement envoyer une requête à la partie exécutante P2 afin de savoir si le rapport de résultats a été généré, dans le cas où la ressource R1 consiste en un ensemble conséquent de données à traiter, et qu'un unique rapport de résultats sera généré lorsque l’ensemble de données aura été traité. Dans un autre exemple, lorsque la ressource R1 consiste en un ensemble d’images à traiter, un rapport de résultats peut être envoyé de manière synchrone à chaque fois qu’une image de l’ensemble d’images est traitée. Optionnellement, dans une étape facultative suivant l’étape E9, le module de génération peut chiffrer le rapport de résultats au moyen d’une troisième clé de chiffrement. La troisième clé de chiffrement peut par exemple avoir été reçue de la partie requérante P1. Dans une étape E10, l’enclave d’exécution envoie le rapport de résultats, chiffré ou non chiffré, à la partie requérante P1. Lorsque le rapport de résultats a été chiffré au préalable, une étape supplémentaire est réalisée, après réception du rapport de résultats chiffré, lors de laquelle le module de chiffrement/déchiffrement 11 de la partie requérante P1 déchiffre le rapport de résultats chiffré pour obtenir un rapport de résultats déchiffré. Une fois le rapport de résultats obtenu, dans une étape E11, la partie requérante P1 envoie une requête de destruction de la au moins une enclave sécurisée 22 à la partie exécutante P2. Dans une étape E12, le gestionnaire d’exécution 21 instruit la destruction de la au moins une enclave sécurisée 22. La représente schématiquement les étapes mises en œuvre pour l’exécution d’une tâche de travail par le procédé 100, selon un ou plusieurs modes de réalisation. Dans certains modes de réalisation, la partie requérante P1 et la partie exécutante P2 sont enregistrées dans une base de données centralisée d’utilisateurs, comprenant des utilisateurs exécutants et des utilisateurs requérants. Les utilisateurs exécutants tels que la partie exécutante P2 comprennent une partie matérielle capable de déployer un ou plusieurs environnements d’exécution approuvés (TEE) et peuvent promouvoir, par exemple sous la forme de catalogues, les ressources qu’ils peuvent mettre à disposition des utilisateurs requérants sur requête de ces derniers. Les utilisateurs requérants peuvent consulter les catalogues afin de planifier l’exécution de tâches de travail sécurisées selon le procédé 100 décrit précédemment. Après identification d’un utilisateur exécutant présentant une ressource d’intérêt pour un utilisateur requérant, sur requête de ce dernier, l’utilisateur exécutant identifié déploiera un (ou plusieurs) environnement d’exécution de confiance (ou enclave sécurisée). Ainsi, avantageusement, la partie exécutante P2 comprend une base de données 25 de ressources stockées au sein de l’infrastructure de la partie exécutante P2. Tout type de stockage peut être utilisé. Par exemple, une base de données de type SQL, un stockage objet (en anglais « object storage »), un stockage de type « File Storage »), un stockage de type « Block storage », ou encore serveur de stockage en réseau (stockage en réseau NAS) peuvent être utilisés. Dans certains modes de réalisation, l’interface de programmation (API) ou l’interface web par laquelle la partie requérante P1 envoie la requête d’initialisation à l’étape E1 est localisée en dehors de l’espace dans lequel le gestionnaire d’exécution 21 va générer la au moins une enclave sécurisée 22, lors de l’étape E2. Ceci permet de minimiser le volume de données et ressources effectivement injectées dans la au moins une enclave sécurisée 22, et a fortiori de renforcer la sécurité des opérations qui seront exécutées au sein de la au moins une enclave sécurisée 22. Dans d’autres modes de réalisation, l’interface de programmation (API) ou l’interface web par laquelle la partie requérante P1 envoie la requête d’initialisation à l’étape E1 est localisée dans une parmi la au moins une enclave sécurisée 22. Dans certains modes de réalisation, lorsque la première ressource R1 est un code à exécuter sur des données, la première ressource R1 peut présenter tout type de format. Avantageusement, la première ressource R1 peut se présenter sous la forme d’un conteneur, comprenant le code d’exécution, les outils de système et les bibliothèques de système. Ainsi, le conteneur, unité d’exécutable autonome, peut exécuter un programme, une charge de travail ou une tâche spécifique. Par exemple, la première ressource R1 est un conteneur Docker. Dans certains modes de réalisation, la partie requérante P1 peut requérir, depuis un module dit module de validation 12, à toute étape du procédé 100, une attestation émise par un module dit module d’attestation 26. Cette attestation comprend des données représentatives d’un degré de fiabilité d’une parmi la au moins une enclave sécurisée 22. Le module d’attestation peut faire partie de la partie exécutante P2. Alternativement, le module d’attestation 26 peut être un module distinct de la partie exécutante P2. Le module d’attestation 26 envoie alors au module de validation 12 de la partie requérante P1 l’attestation. Le module de validation 12 de la partie requérante P1 analyse et valide le cas échéant l’attestation reçue. Ainsi, après réception et validation de l’attestation, la partie requérante P1 sera assurée du niveau de sécurité de l’enclave sécurisée 22 pour laquelle l’attestation a été émise. Ainsi, la partie requérante P1 peut être davantage assurée du niveau de sécurité de l’environnement dans lequel la tâche de travail T va être exécutée. Avantageusement, les communications entre la partie requérante P1 et la partie exécutante P2 sont cryptées, depuis l’envoi de la requête d’initialisation à l’étape E1 jusqu’à l’envoi de la requête de destruction de l’enclave sécurisée 22 à l’étape E12. Par exemple, les communications entre la partie requérante P1 et la partie exécutante P2 peuvent être chiffrées en utilisant l’algorithme à « Double Ratchet ». Il est avantageux, lorsque cela est le cas, que la première ressource R1 et la deuxième ressource soient stockées dans des mémoires dédiées sécurisées 23 et 24 gérées par la au moins une enclave sécurisée 22. En effet, ceci permet d’augmenter le volume de données auxquelles peut accéder la au moins une enclave sécurisée 22 pendant l’exécution de la tâche de travail T, autrement dit, l’augmentation de la taille respective de la première ressource R1 et de la deuxième ressource R2. Par ailleurs, ceci permet un traitement par la au moins une enclave sécurisée 22 continu et en temps réel. Des exemples d’application du procédé précédemment décrit vont être à présent donnés. Un premier exemple consiste en la mise en œuvre de l’entraînement d’un algorithme d’intelligence artificielle nécessitant des données d’entraînement confidentielles venant de l’extérieur. L’algorithme peut être envoyé sur une plateforme et la partie requérante envoie les données d’entraînement confidentielles sur la plateforme. La tâche T consiste alors à obtenir les poids de l’algorithme d’intelligence artificielle. Un deuxième exemple peut consister en l’exécution de l’algorithme entraîné. Par exemple, le but de l’algorithme peut consister en la détermination de présence ou non de signes de pathologie dans une image médicale, du type IRM par exemple. Une base de données d’images peut par exemple être mise à disposition par un hôpital ou un service de santé sur une plateforme. Dans ce cas, le code de l’algorithme à exécuter est envoyé sur la plateforme. Les images sont traitées. Puis le code de l’algorithme disparaît. Le fournisseur du code n’a alors jamais eu accès aux images, et réciproquement, l’hôpital ou le service de santé n’a jamais eu accès au code. Dans un troisième exemple, le procédé pour exécuter la tâche de travail T peut être distribué. Ainsi, une pluralité de parties exécutantes peut intervenir dans le procédé pour fournir des données d’intérêt, tandis qu’un algorithme est envoyé à chacune des parties exécutantes. Procédé (100) mis en œuvre par ordinateur pour exécuter une tâche de travail (T) de manière sécurisée, sur requête d’une partie requérante (P1) comprenant une première ressource (R1), ladite tâche de travail (T) nécessitant d’accéder à une deuxième ressource disponible au sein d’une partie exécutante (P2) distante de la partie requérante (P2) et étant caractérisée par une infrastructure, et nécessitant une interaction entre ladite première ressource (R1) et ladite deuxième ressource, le procédé (100) comprenant les étapes suivantes : – chiffrer, lors d’un premier chiffrement et au moyen d’une première clé de chiffrement, par la partie requérante (P1), ladite première ressource (R1) ; - envoyer, par la partie requérante (P1), une requête d’initialisation accompagnée de résultats d’une fonction de hashage de la première ressource (R1), chiffrés avec la première clé de chiffrement, à la partie exécutante (P2), – créer, par la partie exécutante (P2), au moins une enclave sécurisée (22) dans un espace dédié au sein de l’infrastructure de ladite partie exécutante (P2); - envoyer, par la partie exécutante (P2), depuis une parmi la au moins une enclave sécurisée (22), une deuxième clé de chiffrement, à la partie requérante (P1), et stocker, par la partie exécutante (P2) ladite deuxième clé de chiffrement dans une zone de mémoire sécurisée accessible par chaque enclave sécurisée parmi la au moins une enclave sécurisée (22); – chiffrer, lors d’un deuxième chiffrement, par la partie requérante (P1), la première ressource (R1) chiffrée et la première clé de chiffrement en utilisant ladite deuxième clé de chiffrement; – envoyer, par la partie requérante (P1), une requête et des données dites données d’exécution, lesdites données d’exécution comprenant la première ressource doublement chiffrée et la première clé de chiffrement chiffrée, à la partie exécutante (P2); - déchiffrer, par la partie exécutante (P2), dans une parmi la au moins une enclave sécurisée (22), la première ressource et la première clé de chiffrement à l’aide de la deuxième clé de chiffrement ; - déchiffrer, à l’aide de la première clé de chiffrement précédemment déchiffrée, la première ressource précédemment déchiffrée ; - déchiffrer, par la partie exécutante (P2), les résultats chiffrés de la fonction de hashage de la première ressource (R1) à l’aide de la première clé de chiffrement, puis comparer lesdits résultats déchiffrés avec des résultats d’une fonction de hashage de la première ressource (R1) doublement déchiffrée ; - stocker, par la partie exécutante (P2), la première ressource doublement déchiffrée dans une zone de mémoire sécurisée accessible par chaque enclave sécurisée parmi la au moins une enclave sécurisée (22); – exécuter, par la partie exécutante (P2), ladite tâche de travail (T) dans une parmi la au moins une enclave sécurisée (22) dite enclave d’exécution, par interaction de la première ressource déchiffrée avec la deuxième ressource; – générer, par un module de génération, un rapport de résultat relatif à ladite tâche de travail (T) exécutée ; – envoyer, depuis l’enclave d’exécution, ledit rapport de résultat à la partie requérante (P1). Procédé (100) selon la revendication 1, caractérisé en ce que la requête d’initialisation est envoyée depuis un emplacement extérieur audit espace dédié au sein de l’infrastructure de la partie exécutante (P2). Procédé (100) selon l’une des revendications 1 ou 2, caractérisé en ce que, lorsque la au moins une enclave sécurisée comprend au moins deux enclaves sécurisées, les enclaves sécurisées de l’au moins une enclave sécurisée (22) sont créées simultanément ou séquentiellement durant le procédé (100), lesdites enclaves sécurisées pouvant communiquer entre elles par des canaux chiffrés et prouver leur intégrité et leur capacité à interagir en échangeant des attestations. Procédé (100) selon l’une des revendications 1 à 3, caractérisé en ce que la première ressource (R1), une fois envoyée par la partie requérante (P1) à la partie exécutante (P2), est stockée dans une première mémoire dédiée (24) gérée par la au moins une enclave sécurisée (22) et en ce que la deuxième ressource est stockée dans une deuxième mémoire dédiée (23) sécurisée également gérée par la au moins une enclave sécurisée (22). Procédé (100) selon l’une des revendications précédentes, comprenant en outre, après la génération du rapport de résultat, une étape de destruction, par la partie exécutante (P2), de la au moins une enclave sécurisée (22). Procédé (100) selon l’une des revendications précédentes, dans lequel la partie requérante (P1) peut requérir, à toute étape dudit procédé (100), une attestation émise par un module dit module d’attestation (26), ladite attestation comprenant des données représentatives d’un degré de fiabilité d’une parmi la au moins une enclave sécurisée (22). Procédé selon l’une des revendications précédentes, caractérisé en ce que la première ressource (R1) est un conteneur contenant un code informatique. Procédé selon l’une des revendications 1 à 6, caractérisé en ce que la première ressource (R1) est un code informatique à exécuter, la deuxième ressource comprend des données sur lesquelles ledit code informatique est configuré à être exécuté, et en ce que la deuxième ressource est mise à disposition à la première ressource (R1) via un algorithme de type « push ». Procédé selon l’une des revendications 1 à 6, caractérisé en ce que la première ressource (R1) est un code informatique à exécuter, la deuxième ressource comprend des données sur lesquelles ledit code informatique est configuré à être exécuté, et en ce que la première ressource (R1) accède à la deuxième ressource via un mécanisme de type « pull » en utilisant un chemin d’accès vers la deuxième ressource rendu disponible lors de la création d’une parmi la au moins une enclave sécurisée (22). Procédé selon l’une des revendications 1 à 6, caractérisé en ce que l’une parmi la première ressource (R1) et la deuxième ressource (R2) comprend un premier code informatique, l’autre ressource comprenant des premières données, la ressource comprenant le premier code informatique comprenant en outre optionnellement des deuxièmes données, et le premier code informatique étant configuré pour être exécuté sur les premières données et les deuxièmes données. Procédé selon l’une des revendications 1 à 6, caractérisé en ce que la première ressource (R1) et la deuxième ressource (R2) comprennent chacune respectivement un premier code informatique et un deuxième code informatique configurés pour interagir l’un avec l’autre, la première ressource (R1) et la deuxième ressource (R2) comprenant chacune en outre optionnellement respectivement des premières données et des deuxièmes données, le premier code informatique et le deuxième code informatique étant configurés pour être exécutés sur les premières données et/ou les deuxièmes données. Système comprenant un premier dispositif informatique comprenant un premier circuit et un deuxième dispositif informatique distinct du premier dispositif informatique, comprenant un deuxième circuit, ledit premier circuit et ledit deuxième circuit étant configurés pour mettre en œuvre des étapes du procédé (100) selon l’une des revendications 1 à 11.