INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
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.
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.
- p et q sont des nombres tels que la somme (p+q) varie de 1 à 1000, en particulier de 50 à 350, et plus particulièrement de 150 à 250 ; p pouvant désigner un nombre de 0 à 999 et notamment de 49 à 349 et plus particulièrement de 159 à 239 et q pouvant désigner un nombre de 1 à 1000, notamment de 1 à 10 et plus particulièrement de 1 à 5; - R 1 , R 2 , différents, représentent un radical hydroxy ou alcoxy en C 1 -C 4 , l’un au moins des radicaux R 1 ou R 2 désignant un radical alcoxy.
Lorsque ces silicones aminées sont mises en œuvre, leur utilisation sous forme d’émulsion huile dans eau est particulièrement intéressante. L'émulsion huile dans eau peut comprendre un ou plusieurs tensioactifs. Les tensioactifs peuvent être de toute nature mais de préférence cationique et/ou non-ionique. La taille moyenne en nombre des particules de silicone dans l'émulsion va généralement de 3 nm à 500 nanomètres. De préférence, notamment comme silicones aminées de formule (E), on utilise des microémulsions dont la taille moyenne des particules va de 5 nm à 60 nanomètres (bornes incluses) et plus particulièrement de 10 nm à 50 nanomètres (bornes incluses). Ainsi, on peut utiliser selon l'invention les microémulsions de silicone aminée de formule (E) proposées sous les dénominations FINISH CT 96 E® ou SLM 28020® par la société WACKER.
4/ les silicones de formule suivante (F) :
- m et n sont des nombres tels que la somme (n + m) varie de 1 à 2000 et en particulier de 50 à 150, n pouvant désigner un nombre de 0 à 1999 et notamment de 49 à 149 et m pouvant désigner un nombre de 1 à 2000, et notamment de 1 à 10; - A désigne un radical alkylène linéaire ou ramifié, de préférence linéaire, ayant de 4 à 8 atomes de carbone et de préférence 4 atomes de carbone.
5/ les silicones de formule suivante (G) :
- m et n sont des nombres tels que la somme (n + m) varie de 1 à 2000 et en particulier de 50 à 150, n pouvant désigner un nombre de 0 à 1 999 et notamment de 49 à 149 et m pouvant désigner un nombre de 1 à 2000, et notamment de 1 à 10 ; - A désigne un radical alkylène linéaire ou ramifié ayant de 4 à 8 atomes de carbone et de préférence 4 atomes de carbone. Ce radical est de préférence ramifié.
Pour chaque rampe des Nout rampes successives de la forme d'onde, le module de calcul de durée 24 détermine la donnée Total et le paramètre de données Rest. La donnée Total est égale au nombre de cycles matériel entièrement écoulés depuis le début de la première rampe du lot de Nout rampes jusqu'à la fin de la rampe considérée. Le paramètre de données Rest est égal à 0 dans le cas où la rampe considérée s'achève en même temps qu'un cycle matériel et est égal au nombre de périodes Tdac dans le dernier cycle matériel sur lequel s'étend la rampe considérée depuis le début de ce dernier cycle dans le cas où la rampe considérée ne s'achève pas en même temps qu'un cycle matériel. Dans le cas de la forme d'onde représentée sur la , le module de calcul de durée 24 fournit les données regroupées dans le tableau Table 8 ci-dessous :
Module de calcul de durée Rampe Total Rest R0 2 3 R1 3 1 R2 3 2 R3 5 1
Selon un mode de réalisation, la détermination des paramètres de contrôle Cycles et Index des Nout rampes successives de la forme d'onde est réalisée par le module de fusion 26 selon un procédé comprenant cinq étapes.
Selon un mode de réalisation, pour chaque rampe du lot de Nout rampes successives de la forme d'onde en cours de traitement, la première étape consiste à calculer le cycle matériel de sortie de la rampe, c’est-à-dire le dernier cycle matériel où elle est jouée et en déduire le nombre de cycles à jouer depuis la dernière rampe. Cela correspond au quotient de la durée totale Total avec le sur-échantillonnage Nout moins le cycle de sortie de la précédente rampe. Il y a deux exceptions à prendre en compte, cela vient du fait qu’une rampe alignée avec la fin d'un cycle matériel à son dernier cycle joué qui empiète sur le suivant. Lorsque la rampe finit alignée avec la fin d'un cycle matériel (c’est-à-dire lorsque le paramètre de données Rest est égal à 0) et que la dernière rampe ne l’était pas, il faut retirer un cycle matériel à jouer. Lorsque la précédente rampe a fini alignée avec un cycle matériel mais que celle-ci ne l’est pas, elle doit être jouée un cycle de plus.
Selon un mode de réalisation, à la première étape, pour chaque rampe des Nout rampes successives de la forme d'onde, le module de fusion 26 détermine donc le paramètre de contrôle Cycles de la rampe de la façon suivante : - dans le cas où le paramètre de données Rest de la rampe est égal à 0 et le paramètre de données Rest de la rampe précédente est différent de 0, le paramètre de contrôle Cycles de la rampe est égal à la différence entre la donnée Total de la rampe et la donnée Total de la rampe précédente, le tout diminué de 1 ; - dans le cas où le paramètre de données Rest de la rampe est différent de 0 et le paramètre de données Rest de la rampe précédente est égal à 0, le paramètre de contrôle Cycles de la rampe est égal à la différence entre la donnée Total de la rampe et la donnée Total de la rampe précédente, le tout augmenté de 1 ; et - dans le cas où le paramètre de données Rest de la rampe est égal à zéro et le paramètre de données Rest de la rampe précédente est égal à 0 ou dans le cas où le paramètre de données Rest de la rampe est différent de zéro et le paramètre de données Rest de la rampe précédente est différent de 0, le paramètre de contrôle Cycles de la rampe est égal à la différence entre la donnée Total de rampe et la donnée Total de la rampe précédente.
Lors du traitement d'un lot de Nout rampes, le module de fusion 26 conserve en mémoire le paramètre de données Rest de la dernière rampe du lot précédent de façon à pouvoir déterminer le paramètre de contrôle Cycles de la première rampe du nouveau lot traité. La première rampe de la forme d'onde est traitée comme les autres, seulement, lors du traitement de la première rampe, on considère qu’il y a une rampe "précédente" fictive dont le paramètre de données Rest est égal à 0.
Dans le cas de la forme d'onde représentée sur la , le module de fusion 26 fournit, à la première étape, les données regroupées dans le tableau Table 9 ci-dessous :
Fusion – Etape 1 Rampes Cycles R0 3 R1 1 R2 0 R3 2
A une deuxième étape, le module de fusion 26 détermine une donnée Block pour chaque rampe du lot de Nout rampes. Pour chaque rampe, dans le cas où le paramètre de contrôle Cycles de la rampe est égal à 0 et que le paramètre de données Rest de la rampe précédente est différent de 0, la donnée Block de la rampe est égale à 0, sinon la donnée Block est égale à 1. Pour le traitement de la première rampe de la forme d'onde, on considère qu’il y a une rampe "précédente" fictive dont le paramètre de données Rest est égal à 0 et le paramètre de contrôle Cycles est égal à 0. La deuxième étape consiste donc à indiquer les débuts de groupes de rampes. Si le paramètre de contrôle Cycles de la rampe est égal à 0, la rampe n’est pas le début d’un groupe de rampes, sinon elle l’est. Il y a une exception : si la rampe précédente finit alignée avec la fin d'un cycle matériel, la rampe suivante est nécessairement dans un nouveau groupe de rampes même si la donnée Cycle de la rampe est égal à 0. Dans le cas de la forme d'onde représentée sur la , le module de fusion 26 détermine à la deuxième étape les données regroupées dans le tableau Table 10 ci-dessous :
Fusion – Etape 2 Rampes Cycles Block R0 3 1 R1 1 1 R2 0 0 R3 2 1
A une troisième étape, le module de fusion 26 détermine, pour chaque rampe du lot de Nout rampes, une donnée Blocksum qui est égale à la somme des données Block de toutes les rampes du lot de Nout rampes depuis le début du lot incluant la rampe considérée. Dans le cas de la forme d'onde représentée sur la , le module de fusion 26 détermine à la troisième étape les données regroupées dans le tableau Table 11 ci-dessous :
Fusion – Etape 3 Rampes Cycles Block Blocksum R0 2 1 1 R1 0 1 2 R2 0 0 2 R3 1 1 3