Brevet FR3059441A1 — publié le 20180601

Procédé d'extraction de données d'une base de données tatouées selon un mécanisme de tatouage réversible Domaine de l'invention Le domaine de l'invention est celui de la sécurité informatique et plus particulièrement la protection de jeux de données stockées par exemple sous la forme d'une base de données. L'invention vise en particulier la prévention d'attaques cybercriminelles commises au sein des entreprises et institutions publiques par des employés ou collaborateurs autorisés à accéder aux informations stockées dans des bases de données. 11 s'agit notamment du détournement, de la fuite, du vol ou de la dégradation volontaire ou involontaire de ces informations. De telles attaques représentent aujourd'hui environ 43% des incidents recensés en matière de cybercriminalité. Art antérieur Afin d'assurer la traçabilité des données extraites et de certifier l'authenticité de la personne ayant extrait ces données, il est connu de tatouer l'intégralité des données contenues dans un jeu de données, par exemple stocké sous la forme d'une base de données, le tatouage laissant l'utilisateur accéder à l'information tout en la maintenant protégée par une marque. Par définition, le tatouage de données fait référence à une technique consistant à insérer dans les données à protéger (dites données source ou « hôtes ») une marque (watermark en anglais). Les données dans lesquelles la marque a été insérée sont dites tatouées. La marque est un message contenant des attributs de sécurité, tels qu'une signature ou un code d'authentification, permettant au propriétaire d'une base de données de tracer les utilisateurs qui accèdent à ces données, ou de vérifier l'intégrité de ces dernières. La propriété de réversibilité est une caractéristique propre à certaines modulations de tatouage offrant la possibilité d'enlever la marque des données tatouées et de récupérer les données originales, i.e. avant l'application du tatouage. Des méthodes de tatouage robuste et réversible de données ont été présentées par J. Franco-Contreras, G. Coatrieux, F. Cuppens, N. Cuppens-Boulahia, E. Chazard et C. 3059441 2 Roux dans « Tatouage Robuste et Réversible pour la Traçabilité de Bases de Données Relationnelles en Santé », au congrès Recherche en Imagerie et Technologies pour la Santé (RITS) en Avril 2013 à Bordeaux en France. De manière classique, l'extraction de données dans un ou plusieurs jeux de 5 données, en particulier dans une base de données, nécessite des opérations de tatouage/détatouage portant sur l'intégralité du ou des jeux de données pour pouvoir rendre un résultat fiable, en réponse à une requête d'extraction émise par un utilisateur ayant les droits pour accéder à cette base de données. Par la suite, on parlera de base de données qui est une forme particulière de 10 structuration d'un ou plusieurs de jeux de données, mais bien évidemment, le reste de la description pourra également s'appliquer indifféremment à des bases de données et en particulier à des bases de données relationnelles. Compte-tenu des capacités de traitement (mémoire, processeurs) limitées des systèmes de gestion de bases de données actuels, ces opérations de tatouage/détaouage 15 sont particulièrement désavantageuses pour l'extraction de données, car elles nécessitent des temps de traitement non négligeables alors que la taille des données des données à extraire est en général relativement faible (quelques kilo-octets) en comparaison avec la capacité de la base de données (plusieurs Téraoctets). Par ailleurs, le détaouage intégral de la base de données, même s'il est temporaire, doit être évité pour des raisons de 20 sécurité. Par conséquent, il existe donc un besoin d'extraire, en un minimum de temps, des données contenues dans une base de données tatouées selon un mécanisme de tatouage réversible. L'extraction des données doit être réalisée de manière transparente pour l'utilisateur et façon optimisée et fiable, comme si l'extraction était faite sur la 25 base de données non tatouées. Objet et résumé de l'invention La présente invention offre une solution qui répond au problème technique mentionné ci-dessus en proposant un procédé d'extraction de données par un serveur 30 dans une base de données tatouées selon un mécanisme de tatouage réversible défini par des métadonnées de tatouage, ladite base de données comportant des tuples comprenant au moins un attribut tatoué, ledit procédé étant caractérisé en ce qu'il comprend : 3059441 3 - une étape de réception d'une première requête d'extraction d'un terminal client pour sélectionner un premier ensemble de tuples dans ladite base de données, selon au moins une condition de sélection initiale portant sur la valeur dudit au moins un attribut tatoué par rapport à au moins un seuil S ; 5 - une étape d'obtention, à partir de ladite première requête d'extraction, d'une deuxième requête d'extraction pour sélectionner un deuxième ensemble de tuples comprenant les attributs du premier ensemble de tuples incluant ledit au moins un attribut tatoué sur lequel porte ladite au moins une condition de sélection, ladite deuxième requête d'extraction comprenant au moins une condition de sélection obtenue 10 par transformation de ladite au moins une condition de sélection initiale portant sur au moins un attribut tatoué A, - une étape d'extraction, lors de laquelle les tuples dudit deuxième ensemble sont extraits de ladite base de données selon la deuxième requête d'extraction; - une étape de détatouage, lors de laquelle les tuples dudit deuxième 15 ensemble de tuples extraits sont détatoués selon les métadonnées de tatouage ; - une étape d'obtention, à partir de la première requête d'extraction, d'une troisième requête pour sélectionner un troisième ensemble de tuples parmi ledit deuxième ensemble de tuples détatoués, ladite troisième requête comprenant ladite au moins une condition de sélection initiale ; 20 - une étape de filtrage ou transformation, lors de laquelle la troisième requête est appliquée au deuxième ensemble de tuples détaoués ; et - une étape d'envoi au client des résultats issus de l'étape de filtrage ou transformation. Le procédé selon l'invention permet avantageusement de réduire le temps 25 nécessaire à l'extraction de données dans une base de données tatouées, en évitant de détatouer l'intégralité de la base de données. La transformation des conditions de sélection portant sur des attributs tatoués permet de détatouer seulement un sous-ensemble tuples de la base en tenant compte des modifications apportées aux valeurs des attributs tatouées selon la force de marquage. L'application de la troisième requête 30 permet d'obtenir la réponse à la requête d'extraction initiale d'un utilisateur sur un sous- ensemble de tuples comme s'il l'avait appliquée sur des données non-tatouées. 3059441 4 Selon une autre caractéristique de l'invention, ledit au moins un attribut tatoué A est de type numérique et ladite au moins une condition de sélection initiale par rapport audit au moins un seuil S est transformée en fonction d'une force de marquage a renseignée dans les métadonnées de tatouage selon l'un quelconque des cas suivant : 5 si ladite condition initiale est de type A > S ou A S, celle-ci est transformée en A > S - a ou A S - a respectivement ; si ladite condition initiale est de type A S1-a et A »(strictement supérieur à) : condition de type A>S > » (supérieur ou égal à) : condition de type PIS 15 « 10 où sont sélectionnés les identifiants des séjours contenus dans la table Table pour lesquels la valeur de l'attribut tatoué Durée séjour est strictement supérieure à un seuil 25 S fixé à 10 jours. L'attribut Id sejour est désigné en tant qu'attribut de sélection (ou attribut à sélectionner). Ainsi, la première requête R12 permet de sélectionner un premier ensemble de tuples dans la base de données 3, selon la condition de sélection Durée séjour > 10. Dans l'exemple 3, la première requête d'extraction R13 est formulée, dans le 30 langage SQL, selon l'exemple suivant : R13 : SELECT Max(Age) FROM Table WHERE Sexe='Male' AND Duree_sejour S, celle-ci est transformée en A > S - a ; si la condition initiale est de type A S, celle-ci est transformée en A S - a ; 15 - si la condition initiale est de type A 10 est de type A>S, celle-ci est transformée en A>S-a où a = 2, i.e. Durée séjour > 8, pour l'obtention de la deuxième requête d'extraction R22 dont l'expression est la suivante : 3059441 17 R22 : SELECT Id_sejour FROM Table WHERE Duree_sejour > 8 La clé primaire Id sejour a été désignée comme attribut de sélection de la deuxième requête d'extraction R22. Dans l'exemple 3, étant donné que la condition de sélection initiale 5 Duree_sejour 10 telle que spécifiée dans la première requête d'extraction R12. La troisième requête R32 est exprimée comme suit : R32 : SELECT Id_Séjour FROM E' WHERE Durée_séjour > 10 Dans l'exemple 3, la troisième requête R33 a pour objet de déterminer l'âge maximum des patients en calculant la fonction Max(Age), à partir des données extraites 10 détatoués E' et pour lesquelles la durée de séjour est inférieure à 10 jours, en appliquant la condition de sélection initiale Durée_séjour 18) s ON m.id = s.id_medecin WHERE m.service LIKE "N%", 15 où l'opérateur INNER JOIN opère la jointure des deux tables désignés par « m » et « s » relatives aux médecins et aux patients respectivement. Lors de l'analyse de la première requête d'extraction R15, deux sous-requêtes R150 et R151 sont identifiées : R150 : SELECT id, service FROM Table2 20 R151 : SELECT Age, id_medecin FROM Table WHERE Age > 18 Ces sous-requêtes jouent le rôle de tables sur lesquelles l'opération de jointure est appliquée. La sélection de l'attribut Age et Service dans ces tables est incluse dans la troisième requête R35 par s.age et m.service respectivement lors de l'étape d'obtention E9. 25 En supposant que la table Table2 ne contient pas d'attributs tatoués, la première sous-requête R150 peut être exécutée sans modification, tandis que la deuxième sous-requête R151 portant sur Table comprenant l'attribut tatoué Age doit être modifiée. La condition Age > 18 est transformée en Age > 15, étant donné que la force de marquage de l'attribut Age est égale à ±3. La clé primaire de la table est utilisée pour dé-tatouer. 30 Les deuxièmes requêtes d'extraction obtenues lors de l'étape E3 sont : R250 : SELECT id, service FROM Table2 R251 : SELECT id_sejour, age, id_medecin FROM Table WHERE Age > 15 3059441 23 Les deuxièmes requêtes R250 et R251 permettent de récupérer deux tables de résultats désignées par m et s respectivement, lors de l'étape d'extraction E5. Lors de l'étape de détatouage E7, la marque est supprimée de la table de résultats s. Les résultats dé-tatoués peuvent alors être filtrés en utilisant la condition Age 5 > 18 telle que présente dans la première requête d'extraction Rl. La troisième requête R35 à appliquer sur les résultats en mémoire est de la forme suivante : R35 : SELECT s.age, m.service FROM m INNER JOIN s ON m.id = s.id_medecin WHERE m.service LIKE "N%"; 10 Selon d'autres exemples de mise en oeuvre, ladite au moins une condition de sélection initiale contenue dans la première requête d'extraction R1 par rapport audit au moins un seuil S est transformée en fonction de la force de marquage a selon l'un quelconque des cas suivants - si ladite condition initiale est de type A S, celle-ci est transformée en A S - a ; 15 - si ladite condition initiale est de type A S1- a OR A REVENDICATIONS1. Procédé d'extraction de données par un serveur (2) dans une base de données tatouées (3) selon un mécanisme de tatouage réversible défini par des métadonnées de tatouage (M), ladite base de données comportant des tuples comprenant au moins un attribut tatoué (An), ledit procédé étant caractérisé en ce qu'il comprend : - une étape de réception (El) d'une première requête d'extraction (R1 ; R11 ; R12 ; R13 ; R14 ; R15) d'un terminal client (1) pour sélectionner un premier ensemble de tuples dans ladite base de données (3), selon au moins une condition de sélection initiale portant sur la valeur (A) dudit au moins un attribut tatoué (An) par rapport à au moins un seuil S ; - une étape d'obtention (E3), à partir de ladite première requête d'extraction, d'une deuxième requête d'extraction (R2 ; R21 ; R22 ; R23 ; R24 ; R25) pour sélectionner un deuxième ensemble de tuples comprenant les attributs du premier ensemble de tuples incluant ledit au moins un attribut tatoué sur lequel porte ladite au moins une condition de sélection, ladite deuxième requête d'extraction comprenant au moins une condition de sélection obtenue par transformation de ladite au moins une condition de sélection initiale portant sur au moins un attribut tatoué A, - une étape d'extraction (E5), lors de laquelle les tuples dudit deuxième ensemble (E) sont extraits de ladite base de données (3) selon la deuxième requête d'extraction; - une étape de détatouage (E7), lors de laquelle les tuples dudit deuxième ensemble de tuples extraits(E) sont détatoués (E') selon les métadonnées de tatouage (M); - une étape d'obtention (E9), à partir de la première requête d'extraction (R1), d'une troisième requête (R3 ; R31 ; R32 ; R33 ; R34 ; R35) pour sélectionner un troisième ensemble de tuples parmi ledit deuxième ensemble de tuples détatoués (E'), ladite troisième requête comprenant ladite au moins une condition de sélection initiale ; 3059441 27 - une étape de filtrage ou transformation (E11), lors de laquelle la troisième requête est appliquée au deuxième ensemble de tuples détaoués (E') ; et - une étape d'envoi (E15) au client des résultats (R) issus de l'étape de 5 filtrage ou transformation (E11). 2. Procédé selon la revendication 1, caractérisé en ce que ledit au moins un attribut tatoué A est de type numérique et en ce que ladite au moins une condition de sélection initiale par rapport audit au moins un seuil S est transformée en 10 fonction d'une force de marquage a renseignée dans les métadonnées de tatouage selon l'un quelconque des cas suivant : - si ladite condition initiale est de type A > S ou A S, celle-ci est transformée en A > S - a ou A S - a respectivement ; - si ladite condition initiale est de type A S1-a et A 3. Procédé selon la revendication 1, caractérisé en ce que ledit au moins un attribut tatoué A est de type catégoriel et en ce que ladite au moins une condition de sélection initiale est transformée en au moins deux sous-conditions effectuant la sélection de tuples par rapport à des valeurs catégorielles déterminées en fonction d'une règle de tatouage prédéfinie dans les métadonnées de tatouage. 30 4. Procédé selon la revendication 1, caractérisé en ce que la deuxième requête d'extraction (R2 ; R23) comprend au moins une condition de sélection portant 3059441 28 sur un attribut non tatoué présente dans la première requête d'extraction (R1 ; R13). 5. Procédé selon l'une quelconque des revendications précédentes, caractérisé en 5 ce que la deuxième requête d'extraction (R2) comprend au moins une fonction d'agrégation portant sur un attribut non tatoué présente dans la première requête d'extraction (R1). 6. Procédé selon l'une quelconque des revendications précédentes, caractérisé en 10 ce qu'en présence, dans ladite première requête d'extraction (R1 ; R13 ; R14), d'au moins une fonction d'agrégation portant sur un attribut tatoué, ladite au moins une fonction d'agrégation est exclue de ladite deuxième requête d'extraction (R2 ; R23 ; R24) mais incluse dans la troisième requête (R3 ; R33 ; R34) et l'attribut tatoué sur lequel porte ladite au moins une fonction 15 d'agrégation est inséré dans la deuxième requête d'extraction (R2) en tant qu'attribut de sélection. 7. Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce qu'il comprend en outre une étape de tatouage (E13), lors de laquelle les 20 données extraites détatouées (E) issues de l'étape de filtrage ou transformation (E11) sont tatouées (E') avant l'étape d'envoi (E15). 8. Procédé selon la revendication précédente, caractérisé en ce que le tatouage des données comprend l'insertion, dans les données extraites détatouées (E), d'au 25 moins un identifiant d'un utilisateur ayant émis la première requête d'extraction (R1 ; R12 ; R12 ; R13 ; R14 ; R15) et/ou d'au moins une signature et/ou d'informations de traçabilité. 9. Programme d'ordinateur comprenant les instructions adaptées à la mise en 30 oeuvre des étapes du procédé selon l'une quelconque des revendications précédentes, lorsque ledit programme est exécuté sur un ordinateur. 3059441 29 10. Moyen de stockage d'informations, amovible ou non, partiellement ou totalement lisible par un ordinateur ou un microprocesseur comportant les instructions de code d'un programme d'ordinateur pour l'exécution des étapes du procédé selon l'une quelconque des revendications 1 à 7. 11. Serveur (2) adapté pour exécuter les instructions adaptées à la mise en oeuvre des étapes du procédé selon l'une quelconque des revendications 1 à 7.