FR 2999750 A1 20140620 FR 1262219 A 20121218 Titre : Procédé de traitement de données dans un système de stockage réparti. Domaine technique L'invention se rapporte à un procédé de traitement de données dans un système informatique. Le système inclut un premier dispositif apte à requérir, à un deuxième dispositif, un stockage d'une donnée et d'une opération à réaliser sur cette donnée. Dans ce système, le premier dispositif stocke à la fois une clé privée et une clé publique ; le deuxième dispositif est apte à stocker une donnée chiffrée au moyen de la clé publique. Le traitement en question est tel que les données stockées résultant du traitement sont de type homomorphe. Rappelons qu'un stockage de type homomorphe a les caractéristiques suivantes : une donnée stockée sur un dispositif ne peut être lu que par des utilisateurs autorisés (U) ayant des droits d'accès à la donnée. D'autres utilisateurs tiers (T) peuvent appliquer des traitements à cette donnée sans pouvoir en connaitre le contenu. Les résultats des traitements ne peuvent être lus que par les utilisateurs autorisés (U). Ce type de stockage permet au premier dispositif de déporter un traitement de données sur un second dispositif sans que les données ne soient divulguées/accessibles sur le deuxième dispositif. Le traitement est quelconque ; il peut avoir pour objet un transcodage de vidéo, une analyse de salaires, etc. Etat de la technique Aujourd'hui, le secteur des télécommunications est en train de vivre une mutation depuis un mode de fonctionnement dans lequel les utilisateurs finaux conservent des informations et des applications qui leurs sont propres, vers un autre mode de fonctionnement dans lequel les informations seront stockées de façon déportées/réparties dans des dispositifs distants. Cet autre mode de fonctionnement est appelé aujourd'hui « l'informatique en nuage », de l'expression anglaise « Cloud Computing » bien connue de l'homme du métier. Dans un tel système, où le traitement des données est déporté, la confidentialité des données est le facteur de sécurité le plus mis en cause. En effet, on ne sait pas réellement où sont stockées et traitées les données. De plus, on ne connaît pas la façon dont la donnée est traitée même si le fournisseur dit garantir la confidentialité. Un utilisateur n'est pas certain que ses données ne seront pas déchiffrées lors du traitement et donc divulguées. En d'autres mots, accepter de stocker des données dans le réseau implique une certaine perte de maîtrise du cycle de vie des données. L'invention vient améliorer la situation L'invention A cet effet, selon un aspect fonctionnel, l'invention a pour objet un procédé de traitement de données dans un système incluant un premier dispositif apte à requérir, à un deuxième dispositif, une opération à réaliser sur une donnée, le premier dispositif stockant à la fois une clé privée et une clé publique, le deuxième dispositif étant apte à stocker au moins une donnée chiffrée (A') au moyen de la clé publique, caractérisé en ce qu'il comprend une étape de chiffrement, dans le premier dispositif, d'une opération à effectuer en liaison avec ladite au moins une donnée (A) ; une première étape de transmission à destination du deuxième dispositif du résultat du chiffrement ; une première étape de réception et de stockage dudit résultat dans le deuxième dispositif ; suite à une demande d'accès aux données issue du premier dispositif, une seconde étape de transmission depuis le deuxième dispositif de l'ensemble des données stockées ; une seconde étape de réception par le premier dispositif suivie d'une étape de déchiffrement au moyen de la clé privée et d'une étape de réalisation de l'opération. Les traitements à réaliser sont donc stockés dans le deuxième dispositif de façon chiffrés. En d'autres mots, le deuxième dispositif n'effectue pas de traitement mais se contente d'ajouter le traitement à effectuer en mémoire. Ultérieurement, le premier dispositif requiert un accès aux données stockées sur le deuxième dispositif ; le premier dispositif reçoit en retour les données et le traitement à réaliser ; ce n'est qu'a ce moment-là que le traitement est appliqué aux données. On comprend donc que, grâce à l'invention, les données et les traitements ne font donc pas l'objet d'un déchiffrement sur le deuxième dispositif. Sans connaissance de la clé privé qui a servi au chiffrement, il est donc quasi impossible d'accéder aux données dans le deuxième dispositif. Le principe du stockage homomorphe défini ci-dessus est donc respecté. Selon un premier mode de mise en oeuvre particulier de l'invention, l'étape de réalisation de l'opération est suivie d'une étape de chiffrement, par la clé publique, du résultat de l'étape de réalisation de l'opération, et de stockage dans le deuxième dispositif. Grâce à cette caractéristique, si le premier dispositif accède de nouveau ultérieurement aux données stockées sur le deuxième dispositif, le premier dispositif n'est pas contraint de réaliser une nouvelle fois l'opération réalisée précédemment. L'économie en terme de ressources physiques et/ou logicielles sont d'autant plus considérable que l'opération à réaliser est compliquée. Selon un autre mode de mise en oeuvre particulier de l'invention, qui pourra être mis en oeuvre alternativement ou cumulativement avec le précédent, le premier dispositif comprend une table d'indexation dans laquelle à un index correspond une opération respective, et en ce qu'a l'étape chiffrement, dans le premier dispositif, l'opération à chiffrer inclut l'index correspondant à l'opération à réaliser. Ainsi, même si les données étaient divulguées au niveau du deuxième dispositif, la méconnaissance de l'opération à réaliser évite la divulgation du résultat de l'opération. Selon un autre mode de mise en oeuvre particulier de l'invention, qui pourra être mis en oeuvre alternativement ou cumulativement avec les précédents, l'étape de chiffrement inclut une signature numérique générée par le premier dispositif. Selon un autre mode de mise en oeuvre particulier de l'invention, qui pourra être mis en oeuvre alternativement ou cumulativement avec le précédent, l'étape de chiffrement inclut un nombre aléatoire généré par le premier dispositif. Ces deux derniers modes de mise en oeuvre garantissent que les données reçues depuis le deuxième dispositif proviennent bien initialement du premier dispositif. Selon un aspect matériel, l'invention a trait à un programme d'ordinateur apte à être mis en oeuvre sur comportant des instructions de code pour la mise en oeuvre du procédé selon l'une des revendications précédentes, lorsque ce programme est exécuté par un processeur. Un tel programme peut utiliser n'importe quel langage de programmation. Il peut être téléchargé depuis un réseau de communication et/ou enregistré sur un support lisible par ordinateur. Selon un autre aspect matériel, l'invention a trait à un dispositif, dit second dispositif dans l'exemple de réalisation qui suit, comprenant un module de stockage apte à stocker au moins une donnée chiffrée (A') au moyen d'une clé publique, caractérisé en ce qu'il comprend - un module de réception d'au moins une opération chiffrée à effectuer en liaison avec ladite au moins une donnée (A) ; l'opération étant chiffrée au moyen de la clé publique ; - un module de stockage apte à stocker ladite au moins une opération chiffrée; - un module de transmission apte à transmettre, sur requête, ladite au moins une donnée chiffrée (A') et ladite au moins une opération chiffrée. Selon un autre aspect matériel, l'invention a trait à un dispositif, dit premier dispositif dans l'exemple de réalisation qui suit, comprenant un module de stockage apte à stocker une clé privée et une clé publique, caractérisé en ce qu'il comprend - un module de chiffrement apte à chiffrer au moins une opération à réaliser en liaison avec au moins une donnée stockée sur un autre dispositif ; - un module de transmission de ladite au moins une opération chiffrée ; - Un module de demande d'accès apte à requérir un accès, sur cet autre dispositif, aux données transmises ; - Un module de réception d'au moins une donnée chiffrée et d'au moins une opération chiffrée, - un module de déchiffrement apte à déchiffrer, au moyen de la clé privée, ladite au moins une donnée chiffrée et ladite au moins une opération chiffrée - un module de traitement pour la réalisation de l'opération. L'invention a aussi trait au système informatique incluant le premier dispositif et le second dispositif visés ci-dessus. L'invention sera mieux comprise à la lecture de la description qui suit, donnée à titre d'exemple et faite en référence aux dessins annexés sur lesquels : Les figures La figure 1 représente un système informatique sur lequel est illustré un exemple de réalisation de l'invention. La figure 2 est une vue des échanges de données entre un premier et un deuxième dispositif relativement à un exemple de réalisation. Les figures 3 à 7 sont des variantes de l'exemple de réalisation décrit en référence à la figure 2. Description détaillée d'un exemple de réalisation illustrant l'invention La figure 1 représente un système SYS illustrant un mode de réalisation. Un exemple de réalisation va être décrit en référence à la figure 1. Dans cet exemple, considérons deux groupes d'utilisateurs : - un premier groupe d'utilisateurs G1, utilisateurs ayant le droit de lecture/écriture sur des données ; - un deuxième groupe d'utilisateurs G2, utilisateurs habilités à effectuer des opérations mais d'ayant pas un droit de lecture sur les données. Le premier groupe G1 a connaissance d'une paire de clé à savoir une clé publique et une clé privé. Le deuxième groupe a quant à lui connaissance uniquement de la clé publique. De cette façon, si le deuxième groupe reçoit une donnée chiffrée au moyen de la clé publique, il ne peut pas déchiffrer cette donnée ne connaissant pas la clé secrète. A noter que dans la suite le résultat du chiffrement d'une donnée DATA sera noté DATA'. Une donnée peut aussi faire l'objet d'un traitement par exemple une addition ADD, une multiplication MUL, etc. Dans la suite, un traitement, par exemple une addition, sur une donnée DATA sera noté ADD:DATA. Dans la suite, afin de simplifier l'exposé d'un mode de réalisation, le premier groupe G1 est illustré au moyen d'un dispositif PC et le deuxième groupe au moyen d'un dispositif tel qu'un serveur de traitement SRV. Dans la suite une donnée A va être transmise par le premier dispositif à destination du serveur SRV. Le procédé comprend deux phases - une première phase PH1 de stockage et de traitement ; - et une deuxième phase PH2 d'accès aux données stockées sur le serveur SRV. Au cours de la première phase PH1, dans notre exemple, la donnée A est stockée et chiffré par sa clé pub dans le dispositif PC. La première phase comprend plusieurs étapes référencées ET1n (n=1 à 5). Lors d'une première étape ET11, la donnée chiffrée A' est transmise du dispositif PC au serveur SRV pour y être stockée. Ensuite, un traitement particulier va être appliqué sur la donnée A. Dans notre exemple, B va être ajouté à A. Lors d'une deuxième étape ET12, le dispositif PC chiffre l'opération ADD et la donnée B. le résultat est noté (ADD :B)' Lors d'une troisième étape ET13, le dispositif PC transmet le résultat du chiffrement de la deuxième étape ET12. Lors d'une quatrième étape ET14, le serveur reçoit le résultat du chiffrement de la deuxième étape à savoir (ADD :B)' A réception, le serveur mémorise l'ordre d'arrivée des différentes données issues du dispositif PC. Cet ordre sera ensuite communiquer au dispositif PC lors de l'accès aux données afin que l'opération de déchiffrement respecte cet 20 ordre. Dans notre exemple, lors d'une cinquième étape ET15, le serveur ajoute (ADD :B)' à la donnée A'. Le résultat est noté A': (ADD :B)' 25 Considérons ensuite qu'un utilisateur du premier groupe souhaite accéder aux données stockées sur le serveur. La deuxième phase 2 d'accès aux données stockées sur le serveur comprend plusieurs étapes référencées ET2k (k=1 à 5) . Lors d'une première étape ET21, une requête d'accès REQ est transmise depuis le dispositif PC au serveur SRV. Lors d'une deuxième étape ET22, le serveur répond en transmettant le résultat de la cinquième étape ET15 en référence à la première phase à savoir A': (ADD :B)' Los d'une troisième étape ET23, le dispositif reçoit A' : (ADD :B)' et déchiffre avec la clé privée. Lors d'une quatrième étape ET24, le dispositif obtient les données et l'opération à appliquer aux données à savoir A ADD B. Lors d'une cinquième étape ET25, le dispositif obtient le résultat de la somme de A et B. le résultat est noté D Le mode de réalisation décrit ci-dessus peut bien évidemment faire l'objet de variantes dont les suivantes. Dans l'exemple décrit ci-dessus, un seul dispositif communique avec le serveur ; cependant le nombre de dispositifs et le nombre de serveurs peut être quelconque. Considérons que deux dispositifs communiquent avec le serveur, un premier dispositif PC1 et un deuxième dispositif PC2. Selon une première variante du mode décrit ci-dessus, suite à la cinquième étape ET25, lors d'une sixième étape ET26, le résultat D est chiffré avec la clé publique et transmis lors d'une septième étape ET27 depuis le dispositif, dit premier dispositif, au serveur pour y être stocké lors d'une huitième étape ET28. On comprend qu'une requête REQ', issue par exemple du second dispositif PC2 lors d'une neuvième étape ET29, d'accès ultérieure aux données stockées sur le serveur sera suivie de l'envoi depuis le serveur lors d'une dixième étape ET210 de la données chiffrée D'. Si le second dispositif est à l'origine de cette requête, ce second dispositif reçoit la donnée chiffrée D'. Il suffit alors pour ce second dispositif de déchiffrer D' avec la clé privée pour obtenir D lors d'une onzième étape ET211. Cette variante évite de faire deux fois une opération déjà effectuée par un dispositif. Selon une seconde variante, décrite en référence à la figure 4, chaque demande de traitement issue d'un dispositif inclut une signature numérique, ce afin de garantir comme, toutes signatures numériques, à la fois l'intégrité de la demande de traitement et afin d'authentifier le dispositif à l'origine de la demande. En l'espèce, dans notre exemple, Lors d'une deuxième étape ET12, le dispositif PC chiffre l'opération ADD, la donnée B et la signature SGN. le résultat est noté (ADD :B : SGN)'. Lors de la troisième étape ET13, le dispositif PC transmet le résultat du chiffrement (ADD :B : SGN)' Selon une troisième variante, décrite en référence à la figure 5, les différents types d'opération sont indexés par exemple de la façon suivante : ADD = 1 ; MUL = 2 ; SIN = 12 , etc. Le dispositif PC stocke cette indexation par exemple sous forme de table de correspondance. Ensuite, lors de la deuxième étape ET12, le dispositif PC chiffre l'opération ADD et la donnée B, éventuellement la signature numérique si la troisième variante est mise en oeuvre, le résultat est noté (ADD :B :SGN)'. Le dispositif transforme ce résultat en (1 :B :SGN)'. Lors d'une troisième étape ET13, le dispositif PC transmet (1 :B :SGN) au serveur SRV. Los de troisième étape ET23 relative à la deuxième phase, le dispositif reçoit A' : (1 :B :SGN)' qu'il déchiffre avec la clé privée. Grâce à cette variante, le serveur ne connaît pas l'opération utilisée ADD. Cette troisième variante diminue le risque de divulgation des données appartenant à G1. Selon une quatrième variante, décrite en référence à la figure 6, au lieu d'être une opération simple indexée (ADD, MUL, SIN, etc.), une opération peut être un programme complet apte à manipuler des données. Si la donnée est A, dans ce cas, tout le code binaire du programme est chiffré, transmis et ajouté à la donnée A' sur le serveur SRV. En l'espèce : - Lors de la troisième étape ET13 de la 1ere phase, le dispositif PC transmet (PROG)' au serveur SRV. - Lors de la quatrième étape ET14 de la 1ere phase, le serveur reçoit (PROG)' et l'ajoute à A'. le résultat est noté A': (PROG)' Une cinquième variante, décrite en référence à la figure 7, permet de diminuer encore le risque de divulgation. Selon cette cinquième variante, au lieu de tout chiffrer par des clés asymétriques, on utilise une clé symétrique pour chiffrer la donnée, et on chiffre la clé symétrique avec la clé publique de la donnée. Lors d'une première étape ET11bis, la donnée A est chiffrée au moyen d'une clé symétrique K. Le résultat, noté NK est stocké dans le serveur SRV. Lors de cette première étape, la clé symétrique est chiffrée au moyen de la clé publique. Le résultat est noté K'. Lors d'une deuxième étape ET12bis, le dispositif PC transmet les deux résultats NK : K' Lors d'une troisième étape ET13bis, le serveur reçoit NK : K' et le 20 mémorise. Considérons en suite qu'un utilisateur du premier groupe souhaite accéder à la donnée A stockée sur le serveur. La deuxième phase s'effectue de la façon suivante : Lors d'une première étape ET21bis, une requête d'accès REQ" est 25 transmise depuis le dispositif PC au serveur SRV. Lors d'une deuxième étape ET22bis, le serveur répond en transmet : K' Lors d'une troisième étape ET23bis, le dispositif reçoit NK : K' et déchiffre K' avec la clé privée. Il obtient dans un premier temps K; et déchiffre NK avec la clé symétrique afin d'obtenir A. Selon une sixième et dernière variante, à l'image de la deuxième variante, chaque demande de traitement issue d'un dispositif inclut un nombre aléatoire généré par le dispositif. En l'espèce, dans notre exemple, Lors d'une deuxième étape ET12, le dispositif PC chiffre l'opération ADD, la donnée B et un nombre aléatoire ALEA. le résultat est noté (ADD :B : ALEA)'. Lors de la troisième étape ET13, le dispositif PC transmet le résultat du chiffrement (ADD :B : ALEA)'. Pour la réalisation du procédé décrit ci-dessus, le serveur SRV comprend - un module de réception d'au moins une opération chiffrée (ADD :B)' à effectuer en liaison avec ladite au moins une donnée A ; l'opération étant chiffrée au moyen de la clé publique ; - un module de stockage apte à stocker ladite au moins une opération chiffrée (ADD :B)' ; - un module de transmission apte à transmettre, sur requête, ladite au moins une donnée chiffrée (A') et ladite au moins une opération chiffrée (ADD :B)'. Aussi, pour la réalisation du procédé décrit ci-dessus, le dispositif PC comprend - un module de chiffrement apte à chiffrer au moins une opération (ADD :B) à réaliser en liaison avec au moins une donnée A stockée sur un autre dispositif ; - un module de transmission de ladite au moins une opération chiffrée (ADD :B)' ; - Un module de demande d'accès apte à requérir un accès, sur cet autre dispositif, aux données transmises ; - Un module de réception d'au moins une donnée chiffrée et d'au moins une opération chiffrée, - un module de déchiffrement apte à déchiffrer, au moyen de la clé privée, ladite au moins une donnée chiffrée et ladite au moins une opération chiffrée - un module de traitement pour la réalisation de l'opération (A ADD B) A noter que le te terme « module » utilisé dans ce document, peut correspondre soit à un composant logiciel, soit à un composant matériel, soit encore à un ensemble de composants matériels et/ou logiciels, aptes à mettre en oeuvre la ou les fonctions décrites pour le module. L'expression « au moins une opération chiffrée » signifie indifféremment un chiffrement de plusieurs opérations ou une pluralité de chiffrements d'opérations respectivement. De la même façon « au moins une donnée chiffrée » signifie indifféremment un chiffrement de plusieurs données ou une pluralité de chiffrements de données respectivement. Dans l'exemple donné ci-dessus, une seule opération (ADD :B) est décrite. Naturellement, un traitement peut avoir pour objet une pluralité d'opérations. Supposons les opérations suivantes à appliquer à la donnée A ADD :B et MIN :C On suppose aussi que ces deux opérations sont transmises à deux instants distincts tl et t2, et que le premier dispositif ne requiert pas d'accès aux données stockées sur le serveur entre ces deux instants. Dans cette configuration, la première opération est transmise sous forme chiffrée dans un premier temps (ADD :B)' Le serveur stocke A': (ADD :B)' A ce stade, le serveur stocke deux données chiffrées A' et (ADD :B)' La deuxième opération est transmise sous forme chiffrée (MIN :C)' Le serveur stocke A': (ADD :B)' : (MIN :C)' Le serveur conserve l'ordre des données et opérations qu'il reçoit depuis le terminal. Ainsi, lorsque le terminal requiert un accès aux données, le serveur transmet l'ensemble des données chiffrées, en l'espèce la donnée chiffrée A', et les opérations chiffrées: (ADD :B)' et (MIN :C)', en respectant l'ordre de réception. Le terminal peut ensuite, à réception, déchiffrer l'ensemble des blocs chiffrées à savoir, A', (ADD :B)' et (MIN :C) grâce à la clé privée et obtenir (A ADD B) MIN C en respectant l'ordre. Nojus avons vu dans l'exemple de réalisation décrit ci-dessus que le serveur mémorise l'ordre d'arrivée des différentes données issues du dispositif PC. Cet ordre est ensuite communiquer au dispositif PC lors de l'accès aux données afin que l'opération de déchiffrement respecte cet ordre. Conserver l'ordre d'arrivée peut consister à concaténer les blocs de données chiffrés reçus les uns après les autres. Considérons n blocs Bl...Bn sont reçus successivement les uns après les autres par le serveur. Afin de préserver l'ordre d'arrivée des blocs, le serveur concatène les blocs B1 :B2 :Bn. Lorsque le terminal requiert un accès aux donnés, le serveur répond en transmettant les blocs concaténés B1 :B2 :Bn REVENDICATIONS1. Procédé de traitement de données dans un système incluant un premier dispositif apte à requérir, à un deuxième dispositif, une opération à réaliser sur une donnée, le premier dispositif stockant à la fois une clé privée et une clé publique, le deuxième dispositif étant apte à stocker au moins une donnée chiffrée (N) au moyen de la clé publique, caractérisé en ce qu'il comprend une étape de chiffrement (ET12), dans le premier dispositif, d'une opération (ADD :B) à effectuer en liaison avec ladite au moins une donnée (A) ; une première étape de transmission (ET13) à destination du deuxième dispositif du résultat du chiffrement ((ADD :By); une première étape de réception (ET14) et de stockage dudit résultat dans le deuxième dispositif ; suite à une demande d'accès aux données issue du premier dispositif, une seconde étape de transmission (ET22), depuis le deuxième dispositif, de l'ensemble des données stockées (A', (ADD :13y) une seconde étape de réception (ET25) par le premier dispositif suivie d'une étape de déchiffrement au moyen de la clé privée et d'une étape de réalisation de l'opération (A ADD B). 2. Procédé selon la revendication 1, caractérisé en ce que l'étape de réalisation de l'opération (A ADD B) est suivie d'une étape de chiffrement, par la clé publique, du résultat de l'étape de réalisation de l'opération, et de stockage dans le deuxième dispositif (SRV). 3. Procédé selon la revendication 1, caractérisé en ce que le premier dispositif comprend une table d'indexation (1 -> ADD, 2->MUL) dans laquelle à un index correspond une opération respective, et en ce qu'à l'étape chiffrement, dans le premier dispositif, l'opération à chiffrer (1 :B) inclut l'index correspondant à l'opération à réaliser. 4. Procédé selon la revendication 1, caractérisé en ce que l'étape de chiffrement inclut une signature numérique générée par le premier dispositif. 5. Procédé selon la revendication 1, caractérisé en ce que l'étape de chiffrement inclut un nombre aléatoire généré par le premier dispositif. 6. Programme d'ordinateur apte à être mis en oeuvre sur comportant des instructions de code pour la mise en oeuvre du procédé selon l'une des revendications précédentes, lorsque ce programme est exécuté par un processeur. 7. Dispositif (SRV) comprenant un module de stockage apte à stocker au moins une donnée chiffrée (A') au moyen d'une clé publique, caractérisé en ce qu'il comprend - un module de réception d'au moins une opération chiffrée ((ADD :B)') à effectuer en liaison avec ladite au moins une donnée (A) ; l'opération étant chiffrée au moyen de la clé publique ; - un module de stockage apte à stocker ladite au moins une opération chiffrée ((ADD :B)') ; - un module de transmission apte à transmettre, sur requête, ladite au moins une donnée chiffrée (A') et ladite au moins une opération chiffrée (((ADD :B)'). 8. Dispositif (PC) comprenant un module de stockage apte à stocker une clé privée et une clé publique, caractérisé en ce qu'il comprend - un module de chiffrement apte à chiffrer au moins une opération (ADD :B) à réaliser en liaison avec au moins une donnée (A) stockée sur un autre dispositif ; - un module de transmission de ladite au moins une opération chiffrée ((ADD :B)') ; - Un module de demande d'accès apte à requérir un accès, sur cet autre dispositif, aux données transmises ;- Un module de réception d'au moins une donnée chiffrée et d'au moins une opération chiffrée, - un module de déchiffrement apte à déchiffrer, au moyen de la clé privée, ladite au moins une donnée chiffrée et ladite au moins une opération chiffrée - un module de traitement pour la réalisation de l'opération (A ADD B) 9. Système informatique incluent un premier dispositif selon la revendication 8 et un second dispositif selon la revendication 7. 15