FR 3087066 A1 20200410 FR 1859251 A 20181005 MÉTHODE DE TRANSCHIFFREMENT À FAIBLE LATENCE DE CALCUL DESCRIPTION DOMAINE TECHNIQUE La présente invention concerne de manière générale le domaine du chiffrement homomorphe et plus particulièrement celui du transchiffrement de données préalablement chiffrées au moyen d'un cryptosystème symétrique. ÉTAT DE LA TECHNIQUE ANTÉRIEURE Le chiffrement homomorphe permet d'effectuer des opérations (en pratique des opérations arithmétiques d'addition ou de multiplication) sur des données sans jamais les dévoiler. Un chiffrement homomorphe est un chiffrement (en règle générale asymétrique) Encs (de clé publique pk ) vérifiant la propriété suivante : Ene 1-2 F nk - ' Dec' EncI,k (a)0 Eric (b)1= a+ b (1) où L-1 est l'espace des messages clairs (dit plus simplement espace des clairs) et F est l'espace des messages chiffrés (dit plus simplement espace des chiffrés), + une opération additive dans l'espace des clairs conférant à 1), une structure de groupe, 0 une opération dans l'espace des chiffrés conférant à F une structure de groupe. On comprend ainsi que l'application de (Qi+) dans (F, ) est un homomorphisme de groupes. Dec, est la fonction de déchiffrement correspondant à L'Île (où sk est la clé secrète de l'utilisateur). Il résulte de l'expression (1) qu'il est possible d'effectuer une opération additive entre deux clairs ( a,b ) à partir d'une opération correspondante entre leurs chiffrés correspondants ( Eac (a), Ene (h)). 2 Plus généralement, un chiffrement homomorphe peut être considéré comme un morphisme d'anneau entre l'espace des clairs (muni des opérations +,x ) et l'espace des chiffrés (muni des opérations correspondantes 0,0). On a alors les propriétés suivantes : 5 Dec '(Enc (a + 12))= Dec '(Enc (a)0 Enc .1'( ))= (1+12 (2-1) Dec '(Enc pk(axb))= Dec ,(Enc p,(a)0 Enc (b)) = axb (2-2) Les définitions précédentes ont été données dans le cas d'opérations additives et multiplicatives mais il est bien entendu que tout couple d'opérations conférant à l'espace 10 des chiffrés une structure d'anneau peut être envisagé. A l'aide des expressions (2-1) et (2-2), il est possible d'évaluer une fonction f quelconque, décomposable en opérations élémentaires d'addition et de multiplication, dans l'espace des chiffrés puis de déchiffrer le résultat. Dans la suite de la description, nous utiliserons les notations Ene(HE.pk,a) et 15 Dec(HE.sk x) en lieu et place de Enc Tg(a) et Dec ' (x) pour désigner respectivement une opération de chiffrement homomorphe (de a) avec la clé publique HE.pk et de déchiffrement homomorphe (de x) à l'aide de la clé privée HE..sk . Le chiffrement homomorphe permet par exemple à un client de déléguer un traitement de ses données à un serveur distant, sans que celui-ci puisse avoir accès aux 20 données. Pour ce faire, le client génère une clé privée d'un cryptosystème homomorphe et chiffre les données à traiter au moyen de la clé publique correspondante. Les données ainsi chiffrées sont transmises au serveur qui effectue le traitement en question dans le domaine homomorphe et retourne le résultat, toujours chiffré dans le domaine homomorphe, au client. Celui-ci peut alors récupérer le résultat du traitement en clair, après l'avoir déchiffré 25 avec la clé privée du cryptosystème. Cette méthode de traitement confidentiel des données présente toutefois un inconvénient majeur, celui de la taille des données chiffrées en homomorphe. Dans le meilleur des cas, il faut compter environ 2 koctets de données chiffrées en homomorphe pour 1 bit de données en clair. Afin de remédier à cette inflation de données chiffrées, on 3 peut recourir à une technique de transchiffrement. De manière générale, un transchiffrement permet de passer de données chiffrées par un premier cryptosystème aux mêmes données chiffrées par un second cryptosystème, sans passer par une étape intermédiaire de déchiffrement dans l'espace des clairs. 5 Dans la suite, nous supposerons que le premier cryptosystème est celui d'un chiffrement par flot et que le second système est celui d'un chiffrement homomorphe. Un chiffrement par flot est un chiffrement symétrique dans lequel le message à chiffrer est simplement additionné bit à bit avec un flot de clé (key stream), noté Kstr, , généré à partir d'une clé symétrique, ksym. Le déchiffrement est réalisé comme le 10 chiffrement, par simple addition bit à bit de la donnée chiffrée avec le flux de clé. Ainsi, si l'on note ci une donnée en clair, S(ksym,a), la donnée chiffrée par le chiffrement symétrique S (c'est-à-dire par addition avec le flot de clé Kstr dans le cas d'un chiffrement par flot), S' l'opération de déchiffrement (identique à S dans le cas d'un chiffrement par flot) et ST,LI cette même opération de déchiffrement dans le domaine 15 homomorphe : 57,k(Ene(1-1E.pk,ksym) ,Ene(11E.pk,S(ksym,a)))= Ene(HE.pk,a) (3) 20 Autrement dit, il est possible de déchiffrer dans le domaine homomorphe une donnée chiffrée une première fois par le chiffrement symétrique, S (ksym,a), et une seconde fois par le chiffrement homomorphe. Le déchiffrement par flot est simplement réalisé dans le domaine homomorphe (c'est-à-dire dans le domaine des chiffrés homomorphes), au moyen du chiffré 25 homomorphe du flux de clé et de l'opération élémentaire 0 : II (Enc( HE.pk ,ksym),Enc (HE.pk,S (ksym,a)))= Enc (HE. pk , Kstr)Ci Ertc (HE .pk , S (ksym,a)) (4) 4 Le flot de clé, Kstr, , est généralement obtenu à partir d'un ensemble de registres à décalage rebouclés dont certaines prises et/ou sorties sont combinées non linéairement. Ces registres à décalage sont initialisés par des valeurs initiales obtenues à partir de la clé symétrique, ksvm , et d'un vecteur d'initialisation, IV . Alors que la clé symétrique reste 5 identique d'une opération de chiffrement à l'autre, le vecteur d'initialisation (sortie de compteur par exemple) peut être incrémenté périodiquement. Des algorithmes de chiffrement par flot tels que Trivium, Kreyvium, ou ceux de la famille FLIP, utilisent ce principe d'initialisation. Le chiffré homomorphe du flux de clé Enc (HE pk, Kstr) est généré dans le 10 domaine homomorphe à partir de Enc (HE pk ,ksym), encore appelé jeton (public) de transchiffrement. En d'autres termes, de même que l'on sait générer un flux de clé à partir de la clé symétrique, k.sym , dans l'espace des clairs, on sait générer un chiffré homomorphe de flux de clé à partir du jeton de transchiffrement Enc (HE pk , ksym) , dans l'espace homomorphe, comme décrit par exemple dans l'article (cf. notamment § 2.2) de 15 A. Canteau et cd. intitulé « Stream-ciphers : a practical solution for efficient homomorphic- ciphertext compression » publié dans FSE 2016 : 23rd International Conference on Fast Software Encryption, Springer Verlag, 20-23 March 2016, Bochum, Germany, 2016, vol. 9783 - LNCS (Lecture Notes in Computer Science), pp. 313-333 On voit dans l'expression (4) que le premier terme de droite, Enc (HE pk, Kstr), 20 autrement dit le chiffré homomorphe du flot de clé, peut être calculé hors ligne, une fois pour toutes pour autant que les conditions d'initialisation (vecteur [V) restent inchangées. La situation d'un client faisant appel à une plateforme distante pour lui faire effectuer un traitement de données de manière confidentielle a été illustrée en Fig. 1. A l'étape 110, le client, CLT , génère un couple de clé privée et de clé publique 25 d'un cryptosystème homomorphe (asymétrique), soit HE .sk , HE .pk et envoie à la plateforme distante, PTF , la clé publique HE.pk . Par ailleurs, le client génère en 120 une clé symétrique de chiffrement par flot, ksvm , puis, en 130, le jeton de transchiffrement, Enc (HE pk , ksym) , correspondant à cette clé et à un vecteur d'initialisation IV . Tant que 5 le vecteur d'initialisation n'est pas modifié, le jeton de transchiffrement peut être utilisé pour le traitement des requêtes du client en question. A l'étape 140, le client chiffre les données à traiter, a, au moyen du chiffrement symétrique, soit S (ksym. a) et transmet une requête de traitement, PR , à la plateforme, 5 ayant pour argument S (ksym, a) . A l'étape 150, la plateforme effectue un chiffrement homomorphe des données chiffrées S (ksym.a) au moyen de la clé publique, HE.pk . A l'étape 160, la plateforme effectue un transchiffrement des données à traiter a , selon l'expression (4). Le résultat du transchiffrement n'est autre que Enc(HE.pk,a). 10 A l'étape 170, la plateforme effectue le traitement des données, F, dans le domaine homomorphe, soit FHE . Le résultat est obtenu sous forme chiffrée dans le domaine homomorphe, (FHE. r) = F' (Enc (PUE. pk. a)) . A l'étape 180, la plateforme retourne le résultat sous forme chiffrée au client qui le déchiffre en 190 au moyen de la clé privée, FHE.sk , pour obtenir le résultat en clair, 15 r = F (a) . On notera d'abord que le client peut générer directement le chiffré homomorphe du flux de clé, Enc(HE.pk,Kstr), en 130, et le transmettre à la plateforme. On notera d'autre part, que l'étape 150 peut être également effectuée par le client, auquel cas la requête de traitement a pour argument Etic(HE.pk,S (ksyrn,a)) 20 L'étape de transchiffrement, 160, peut alors être effectuée très rapidement, au fil de l'eau, au moyen d'une simple addition bit à bit (opération XOR) dans le domaine homomorphe, soit Enc (HE.pk,Kstr)C) Fin. (HE . pk,S (ksyni, . On comprend que l'étape de transchiffrement n'induise dès lors quasiment pas de latence. 25 La situation diffère cependant lorsqu'un client souhaite effectuer un traitement confidentiel sur des données stockées sur la plateforme et non plus transmises avec une requête. Cette situation, illustrée en Fig. 2, fait intervenir un client (ou utilisateur de données), CLT , une plateforme chargée de l'exécution des requêtes, PTF , et un 6 fournisseur de données, DP Le client génère comme précédemment en 210 une paire de clé privée et de clé publique d'un cryptosystème homomorphe HE.sk HE.pk . La clé publique HE.pk est transmise à la plateforme ainsi qu'au fournisseur de données en 215. 5 Le fournisseur de données génère de son côté en 220 une clé symétrique ksynt d'un cryptosystème symétrique ainsi que le jeton de transchiffrement correspondant, Enc (HE. pk , ksvm) . Le jeton de transchiffrement est transmis à la plateforme en 225. Par ailleurs, les données, u, du fournisseur de données sont chiffrées au moyen de la clé symétrique, ksyin , autrement dit ces données sont sommées bit à bit au flux de 10 clé, Kstr , en 230, avant d'être transmises à la plateforme. Les données chiffrées, S (ksym,a) sont chiffrées une seconde fois en homomorphe par la plateforme à l'étape 240, pour obtenir Enc(HE.pk,S (ksytn, a)) . Par ailleurs, en 245, le chiffré homomorphe du flux de clé, soit Enc(HE.pk,Kstr) , est généré par la plateforme à partir du jeton de transchiffrement Enc (HE.pk,ksyn) . 15 A l'étape 250, les données chiffrées font l'objet d'un transchiffrement au moyen de l'expression (4). Le résultat est constitué par ces mêmes données, chiffrées dans le domaine homomorphe, à savoir Enc(HE.pk , a) . Ainsi, lorsque le client demande en 260, au moyen d'une requête, PR(in), qu'un traitement soit effectué sur des données du fournisseur de données, la plateforme 20 recherche les données correspondantes disponibles dans le domaine homomorphe, Enc(HE.pk,a), et effectue en 2701e traitement demandé FHE . Le résultat est obtenu dans le domaine homomorphe Enc (HE.pk, r) avec r = F(a) . Le résultat est ensuite transmis en 280 au client qui le déchiffre en 290 au moyen de la clé privée HE.sk pour obtenir le résultat en clair, r = F (a). 25 Dans ce contexte d'utilisation, les données fournies par le fournisseur d'accès sont stockées sur la plateforme sous forme chiffrée dans le domaine homomorphe. Toutefois, étant donné la forte inflation de la taille des données lors de leur chiffrement dans le domaine homomorphe, cette solution n'est pas acceptable pour des bases de données de 7 volume important, telle qu'une base de données génomiques par exemple. Une solution serait de demander au fournisseur de données d'effectuer le chiffrement homomorphe au coup par coup. Toutefois, une telle solution serait pénalisante en termes de latence pour le traitement de la requête. 5 Le but de la présente invention est par conséquent de proposer une méthode de traitement confidentiel de données stockées sur une plateforme distante qui ne présente pas de latence de calcul importante. Plus précisément, le but de la présente invention est de proposer une méthode de transchiffrement qui n'induise qu'un très faible temps de latence lors d'un tel traitement. 10 EXPOSÉ DE L'INVENTION La présente invention est définie par une méthode de traitement confidentiel de données stockées sur une plateforme, les données étant stockées dans une base de données, sous une forme chiffrée par un chiffrement par flot, à l'aide d'un flux de clé 15 généré à partir d'une clé symétrique, le traitement confidentiel étant effectué à la requête d'un client ayant préalablement généré un couple de clé secrète et de clé publique d'un cryptosystème homomorphe et ayant transmis ladite clé publique à la plateforme, la méthode de traitement comportant les étapes suivantes : un module de gestion des requêtes (RQM ), recevant une requête du client 20 (PR()), génère une pluralité de demandes d'accès (arq,,...,arq, ) à des blocs de données (B,....,B,) et transmet ces demandes à un module de transchiffrement (TCA) ; le module de transchiffrement ( TCA), recevant une demande d'accès (arq, ) à un bloc de données, transmet la demande d'accès à un module de prédiction de demandes d'accès (AP ) qui lui retourne une liste (s-2' ) de blocs de données dont l'accès est prédit ; 25 le module de transchiffrement (TCA) lit le bloc de données (Bu) dans la base de données et détermine si un bloc de flux de clé correspondant est présent dans la mémoire cache, et dans la négative l'ajoute à la liste de blocs de données, la liste de blocs de données étant fournie à un module de calcul homomorphe ( KSHC ) ; le module de calcul homomorphe (KSHC ) est adapté à calculer dans le domaine 8 homomorphe des chiffrés homomorphes de blocs de flux de clé correspondant aux blocs de données de ladite liste, et à transmettre les chiffrés homomorphes des blocs de flux de clé, au module de transchiffrement au fur et à mesure de leur obtention ; le module de transchiffrement (TCA ) stocke les chiffrés en homomorphe des 5 blocs de flux de clé dans la mémoire cache, et transchiffre les blocs de données dont l'accès est demandé en les additionnant respectivement avec les chiffrés homomorphes des blocs de flux de clé correspondants, lus de la mémoire cache ; le module de tranchiffrement (TCA) transmet les blocs de données ainsi transchiffrés au module de gestion des requêtes (RQM ) qui effectue, dans le domaine 10 homomorphe, le traitement sur les blocs de données ainsi transchiffrés correspondant à la requête ; le module de gestion des requêtes (RQM ) transmet au client le résultat du traitement, sous forme chiffrée en homomorphe. Selon un exemple de réalisation, les modules de gestion des requêtes, de 15 transchiffrement, de prédiction de demandes d'accès et de calcul homomorphe sont des agents logiciels. Selon un premier type d'implémentation, les modules de gestion des requêtes, de transchiffrement, de prédiction de demandes d'accès et de calcul homomorphe sont installés sur une même machine. 20 Selon un second type d'implémentation, les modules de gestion des requêtes, de transchiffrement, de prédiction de demandes d'accès sont situés sur une première machine et le module de calcul homomorphe est installé sur une seconde machine. Dans ce cas, la seconde machine peut être équipée d'un accélérateur matériel de chiffrement homomorphe. 25 La seconde machine peut notamment être un serveur, la première machine transmettant de manière asynchrone au serveur des requêtes de chiffrés en homomorphe de blocs de flux de clé pour des opérations de transchiffrement à effectuer ou pour des opérations de transchiffrement prédites. La plateforme peut héberger une pluralité de bases de données, chaque base de données étant alimentée par un fournisseur de données et étant associée à une clé de 9 chiffrement symétrique, les blocs de données stockés dans une base de données étant chiffrés par le fournisseur de données alimentant la base, au moyen d'un flux de clé généré à partir de la clé symétrique associée à cette base de données. La mémoire cache peut être gérée par un algorithme de remplacement de type 5 FIFO. Alternativement, elle peut être gérée par un algorithme de remplacement de type LRU ou MRU. Avantageusement, la plateforme comprend une pluralité de modules de prédiction d'accès, chaque module de prédiction d'accès étant adapté à prédire les demandes d'accès à une base de données associée à ce module. 10 BRÈVE DESCRIPTION DES DESSINS D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture d'un mode de réalisation préférentiel de l'invention, décrit en référence aux figures jointes parmi lesquelles : La Fig. 1 représente de manière schématique une première méthode d'exécution 15 confidentielle d'une requête de traitement de données, faisant appel à une étape de transchiffrement connue de l'état de la technique ; La Fig. 2 représente de manière schématique une seconde méthode d'exécution confidentielle d'une requête de traitement de données, faisant appel à une étape de transchiffrement connue de l'état de la technique ; 20 La Fig. 3 représente de manière schématique une méthode d'exécution confidentielle d'une requête de traitement de données faisant appel à une étape de transchiffrement selon un mode de réalisation de l'invention. EXPOSÉ DÉTAILLÉ DE MODES DE RÉALISATION PARTICULIERS 25 On considère dans la suite un contexte applicatif tel que celui représenté en Fig. 2. De manière plus générale, la plateforme distante pourra être interrogée par une pluralité de clients, chaque client disposant de son propre cryptosystème (asymétrique) homomorphe et transmettant la clé publique dudit cryptosystème à la plateforme ainsi 10 qu'au fournisseur de données. De même, la plateforme distante pourra recevoir et stocker des données d'une pluralité de fournisseurs de données, chaque fournisseur disposant de sa propre clé symétrique et transmettant cette dernière à la plateforme, après l'avoir chiffrée au moyen de la clé publique d'un cryptosystème homomorphe d'un client 5 possédant un droit d'accès. Par exemple, les fournisseurs de données pourront être des patients transmettant leurs données génomiques sous forme chiffrée à une plateforme et les clients pourront être des médecins souhaitant consulter ces données génomiques. On supposera dans la suite que les clients et les fournisseurs de données peuvent s'identifier et s'authentifier auprès de la plateforme et que les clients disposent de droits d'accès aux 10 données dont ils souhaitent faire effectuer le traitement. Dans certains cas, les clients peuvent être confondus avec les fournisseurs d'accès où à un sous-ensemble d'entre eux seulement. Ainsi, dans l'exemple précité, outre les médecins, les patients eux-mêmes pourront accéder à leurs propres données génomiques et faire effectuer de manière confidentielle des traitements sur ces données. Enfin, les droits d'accès des différents 15 clients pourront différer, par exemple être limités à certaines bases de données hébergées par la plateforme, à certains champs de données ou encore à certains types de traitement seulement. La gestion des droits d'accès n'entre toutefois pas dans le cadre de la présente invention. La méthode de transchiffrement selon la présente invention fait intervenir 20 plusieurs agents : un module de gestion des requêtes de traitement, RQM , un module de transchiffrement, TCA , un module de prédiction des accès, AP , et un module de calcul homomorphe, KSTIC . Ces modules sont en règle générale des agents logiciels faisant partie de la plateforme distante mais certains d'entre eux, notamment le module de calcul, pourront être réalisés sous forme de processeurs dédiés ou de processeurs équipés 25 d'accélérateurs matériels. Certains éléments de la plateforme pourront être distribués dans le Cloud ou être hébergés par des serveurs distants. Sans préjudice de généralisation, nous considérerons dans la suite le cas d'un client souhaitant faire exécuter par la plateforme un traitement de manière confidentielle sur des données préalablement fournies par un fournisseur d'accès. Les données du 30 fournisseur d'accès sont stockées dans une base de données de la plateforme, sous forme 11 chiffrée par la clé symétrique du fournisseur d'accès. Les requêtes de traitement pourront concerner différents champs d'un enregistrement ou différents enregistrements présents dans une base de données hébergée par la plateforme. Par exemple, dans le premier cas, un médecin pourra souhaiter 5 accéder à un gène donné chez une cohorte de patients, et dans le second cas, à différents gènes du génome d'un patient. Chaque requête reçue par le module de gestion RQM spécifie, par exemple au moyen d'un index, sur quelles données doit être effectué le traitement. A la fin du traitement, le module de gestion retourne le résultat du traitement, sous forme chiffrée 10 par la clé publique du cryptosystème homomorphe du client. La Fig. 3 représente de manière schématique le chronogramme d'une méthode de traitement confidentiel de données faisant appel une méthode de transchiffrement selon l'invention. 15 On a représenté sur la figure le module de gestion des requêtes, RQM , le module de transchiffrement, TCA le module de prédiction des accès, AP , et le module de chiffrement homomorphe, KSHC . Lorsque le module RQM reçoit une requête de traitement de données, il génère une séquence de demandes d'accès aux données devant faire l'objet du traitement. 20 Chaque demande d'accès est relative à un bloc de données. Ces demandes d'accès, désignées par argi,...,arg, sont transmises au module de transchiffrement, TCA, au fur et à mesure des besoins du traitement. Lorsque le module de transchiffrement reçoit une demande d'accès, arq, celui- ci la fait suivre au module de prédiction des accès, AP . En outre, il lit dans la base de 25 données le bloc de données, B, , demandé dans la demande d'accès art?, et le chiffre en homomorphe au moyen de la clé publique HE.pk . On rappelle que le bloc de données B' est stocké sous forme chiffrée par la clé symétrique ksym (autrement dit par addition bit à bit du flux de clé Kstr ), soit B' = an+ Kstr, où a, représente les données en clair et Kstr, le bloc de flux de clé servant à chiffrer an . 12 Le module de transchiffrement a également accès à une mémoire cache contenant des chiffrés homomorphes des blocs du flux de clé, soit Enc (HE.pk,Kstr') où p est un indice de bloc dans le flux de clé. Si le bloc Ene(HE.pk,Kstr) est présent dans la mémoire cache, le module de 5 transchiffrement effectue l'opération de transchiffrement : Eue (HE. pk , Ksm) e Eue (HE. pk, B') = Enc. (HE. pk , u,,) (5) et renvoie le résultat au module de gestion des requêtes 10 Si le bloc Enc(HE.pk,Kstr') n'est pas présent dans la mémoire cache, il se met en attente de ce bloc. Le module de prédiction d'accès, AP , prédit à partir de la requête, arq' , l'ensemble des blocs de données 8q' E nr, dont l'accès pourra être demandé lors des demandes d'accès suivantes. Cette prédiction peut être réalisée à partir de règles 15 prédéterminées (connues a priori) dépendant de l'application ou bien être le fruit d'un apprentissage supervisé ou non supervisé. Dans tous les cas, le module de prévision AP retourne au module de transchiffrement la liste ordonnée SI, des indices de ces blocs de données. Si la mémoire cache ne contient pas le bloc Enc (HE.pk,Kstr') , l'indice n est 20 ajouté à la liste ordonnée 12' et placé en tête de liste. Le module de transchiffrement transmet la liste ordonnée 0.' au module de chiffrement homomorphe, KSHC . Ce module génère successivement dans le domaine homomorphe, les chiffrés homomorphes des blocs de flux de clé, Elle (H E. pk , Kstrq), c 12,, et les retourne au module de transchiffrement au fur et à mesure qu'ils sont 25 calculés. Cette génération est effectuée par calcul dans le domaine homomorphe à partir du jeton de transchiffrement, Du- (HE . pk ,k.sym). Dès que le module de transchiffrement reçoit le bloc, Ef1C (HE.pk , Kstrn) , celui-ci 13 effectue l'opération de transchiffrement exprimée en (5) et renvoie le résultat au module de gestion des requêtes. Les blocs subséquents sont stockés dans la mémoire cache au fur et à mesure qu'ils sont reçus. 5 Le processus se poursuit avec une nouvelle demande d'accès, arqn_fri transmise par le module de gestion des requêtes au module de transchiffrement. Ce dernier fait suivre la demande d'accès au module de prédiction d'accès qui peut à nouveau prédire, l'ensemble des blocs de données Bo, qeQ dont l'accès pourra être demandé lors des demandes d'accès suivantes. Cette prédiction est toutefois optionnelle dans la mesure où les 10 éléments de l'ensemble 0.1 peuvent être déjà présents dans l'ensemble Q. . Si le module de prédiction effectue une nouvelle prédiction seuls les éléments de Qn_fr, n'appartenant pas à 12' sont transmis au module KSHC . Ce dernier génère dans le domaine homomorphe des chiffrés homomorphes de blocs de flux de clé correspondant aux indices de 5112+, - n' et les transmet au module de transchiffrement au fur et à mesure qu'ils sont 15 calculés. Le module de transchiffrement stocke les nouveaux chiffrés homomorphes des blocs de flux de clé dans la mémoire cache, au fur et à mesure qu'ils sont reçus. La mémoire cache est gérée au moyen d'un algorithme de remplacement de lignes de cache ou CRP (Cache Replacement Policy) qui peut être indépendant de l'utilisation des 20 blocs, par exemple un algorithme de remplacement de type FIFO (First In First First Out), ou bien dépendant de l'utilisation des blocs, par exemple un algorithme de type LRU (Last Recently Used) ou MRU (Most Recently Used). L'homme du métier comprendra que le module de prédiction permet l'anticipation des accès et du calcul des chiffrés homomorphes de blocs de flux de clé, ce 25 qui réduit considérablement la latence de l'opération de transchiffrement. Lorsque le module de gestion des requêtes dispose de l'ensemble des blocs transchiffrés Enc(HE.pk,an), n = 1 N, celui effectue le traitement dans le domaine homomorphe et retourne au client le résultat Enc (HE.pk,r) avec r = F(a). Le client peut alors déchiffrer le résultat avec la clé privée du cryptosystème 14 homomorphe pour obtenir le résultat en clair, r. Les différents modules RQM , TCA , A P , et KSHC peuvent être installés sur une même machine ou des machines distinctes. 5 Selon un premier mode de réalisation, les différents modules sont installés sur une même machine. Les connaissances a priori sur les requêtes sont alors celles qui sont adressées à cette machine. Les chiffrés homomorphes des blocs de flux de clé peuvent être calculés en mode pipeline dans l'intervalle de temps entre deux requêtes. Selon un deuxième mode de réalisation, les modules RQM TCA , AP sont 10 installés sur une première machine et le module KSHC est installé sur une seconde machine, par exemple un serveur recevant de manière asynchrone des requêtes des chiffrés homomorphes de blocs de flux de clé. Cette seconde machine est alors spécialisée dans la génération des chiffrés homomorphes des blocs de flux de clé Enc (HE , Kstrj , c'est-à-dire dans le calcul dans 15 le domaine homomorphe de ce flux de clé à partir du jeton de transchiffrement Elle (H E .pk , ksym) . La seconde machine peut être équipée d'accélérateurs matériels de manière à ce que le calcul homomorphe soit le plus rapide possible. La première machine peut transmettre à la seconde machine des requêtes de calcul de chiffrés homomorphes de blocs de flux de clé pour une opération de transchiffrement à effectuer, voire anticiper 20 de manière spéculative des requêtes à venir. Selon un troisième mode de réalisation, le module KSHC est réalisé en mettant en oeuvre une infrastructure distribuée dans le Cloud ou bien répartie sur une pluralité de serveurs, optimisée pour le calcul dans le domaine homomorphe. Là encore, cette infrastructure peut comprendre des accélérateurs matériels de manière à réduire le temps 25 de calcul. Quel que soit le mode de réalisation envisagé, la plateforme peut héberger plusieurs bases de données, chaque base de données étant alimentée par un fournisseur de données. Autrement dit, à chaque base de données est associée une clé symétrique. Les modules RQM , TCA , AP , et KSHC peuvent être communs à toutes ces bases de 15 données mais, dans ce cas, le module AP utilisera des règles de prédiction distinctes selon les différentes bases. De même, le module KSHC générera des chiffrés homomorphes de flux de clé différents pour les différentes clés symétriques. Alternativement, on pourra prévoir autant de modules AP et de modules KSHC que de base de données, chaque 5 module AP étant alors spécialisé dans la prédiction des accès dans la base de données à laquelle il est associé et chaque module KSHC étant spécialisé dans le calcul dans le domaine homomorphe de blocs de flux de clé, REVENDICATIONS1. Méthode de traitement confidentiel de données stockées sur une plateforme, les données étant stockées dans une base de données, sous une forme chiffrée par un chiffrement par flot, à l'aide d'un flux de clé généré à partir d'une clé symétrique, le traitement confidentiel étant effectué à la requête d'un client ayant préalablement généré un couple de clé secrète et de clé publique d'un cryptosystème homomorphe et ayant transmis ladite clé publique à la plateforme, caractérisé en ce que : un module de gestion des requêtes (RQM ), recevant une requête du client (PR(i,)), génère une pluralité de demandes d'accès ( ary,,..., arqy) à des blocs de données (131,...,B,) et transmet ces demandes à un module de transchiffrement (TCA); le module de transchiffrement (TCA), recevant une demande d'accès (arci' ) à un bloc de données, transmet la demande d'accès à un module de prédiction de demandes d'accès (AP ) qui lui retourne une liste (1-2' ) de blocs de données dont l'accès est prédit ; le module de transchiffrement (TCA) lit le bloc de données (B,) dans la base de données et détermine si un bloc de flux de clé correspondant est présent dans la mémoire cache, et dans la négative l'ajoute à la liste de blocs de données, la liste de blocs de données étant fournie à un module de calcul homomorphe ( KM-IC ) ; le module de calcul homomorphe ( KSHC ) est adapté à calculer dans le domaine homomorphe des chiffrés homomorphes de blocs de flux de clé correspondant aux blocs de données de ladite liste, et à transmettre les chiffrés homomorphes des blocs de flux de clé, au module de transchiffrement au fur et à mesure de leur obtention ; le module de transchiffrement (TCA ) stocke les chiffrés en homomorphe des blocs de flux de clé dans la mémoire cache, et transchiffre les blocs de données dont l'accès est demandé en les additionnant respectivement avec les chiffrés homomorphes des blocs de flux de clé correspondants, lus de la mémoire cache ; le module de tranchiffrement (TCA) transmet les blocs de données ainsi transchiffrés au module de gestion des requêtes ( RQM ) qui effectue, dans le domaine 17 homomorphe, le traitement sur les blocs de données ainsi transchiffrés correspondant à la requête ; le module de gestion des requêtes (RQM) transmet au client le résultat du traitement, sous forme chiffrée en homomorphe. 5 2. Méthode de traitement confidentiel de données selon la revendication 1, caractérisée en ce que les modules de gestion des requêtes, de transchiffrement, de prédiction de demandes d'accès et de calcul homomorphe sont des agents logiciels. 10 3. Méthode de traitement confidentiel de données selon la revendication 1, caractérisée en ce que les modules de gestion des requêtes, de transchiffrement, de prédiction de demandes d'accès et de calcul homomorphe sont installés sur une même machine. 15 4. Méthode de traitement confidentiel de données selon la revendication 1, caractérisée en ce que les modules de gestion des requêtes, de transchiffrement, de prédiction de demandes d'accès sont situés sur une première machine et que le module de calcul homomorphe est installé sur une seconde machine. 20 5. Méthode de traitement confidentiel de données selon la revendication 4, caractérisée en ce que la seconde machine est équipée d'un accélérateur matériel de chiffrement homomorphe. 6. Méthode de traitement confidentiel de données selon la revendication 4, 25 caractérisée en ce que la seconde machine est un serveur, la première machine transmettant de manière asynchrone au serveur des requêtes de chiffrés en homomorphe de blocs de flux de clé pour des opérations de transchiffrement à effectuer ou pour des opérations de transchiffrement prédites. 7. Méthode de traitement confidentiel de données selon l'une des revendications 18 précédentes caractérisée en ce que la plateforme héberge une pluralité de bases de données, chaque base de données étant alimentée par un fournisseur de données et étant associée à une clé de chiffrement symétrique, les blocs de données stockés dans une base de données étant chiffrés par le fournisseur de données alimentant la base, au moyen d'un 5 flux de clé généré à partir de la clé symétrique associée à cette base de données. 8. Méthode de traitement confidentiel de données selon l'une des revendications précédentes, caractérisée en ce que la mémoire cache est gérée par un algorithme de remplacement de type FIFO. 10 9. Méthode de traitement confidentiel de données selon l'une des revendications 1 à 7, caractérisée en ce que la mémoire cache est gérée par un algorithme de remplacement de type LRU ou MRU. 15 10. Méthode de traitement confidentiel de données selon l'une des revendications précédentes caractérisée en ce que la plateforme comprend une pluralité de modules de prédiction d'accès, chaque module de prédiction d'accès étant adapté à prédire les demandes d'accès à une base de données associée à ce module.