Protéger et utiliser ses données en ligne
De nombreux services numériques ont vu le jour ces dernières années avec le développement d’Internet. Ces services sont de nature différente : la recherche d’informations (Wikipédia), l’écoute de musique en streaming (Deezer, Spotify, etc.), la vidéo à la demande (YouTube, Netflix), les réseaux sociaux (Facebook, Twitter…) ou encore la sauvegarde de données en ligne (Dropbox, Google Drive). C’est sur ce dernier service, la sauvegarde de données en ligne, également désigné par le terme d’externalisation de données dans le cloud, que nous nous focalisons dans cet article.
Stocker ses données
Le stockage de données en ligne offre de nombreux avantages. En effet, il permet de sauvegarder des données même si le matériel informatique tombe en panne. Par ailleurs, si l’on se déplace régulièrement, le stockage de données en ligne permet d’y avoir accès facilement quel que soit l’endroit où l’on se trouve, à condition de disposer d’une connexion internet.
Bien entendu ces avantages conduisent à des questions de confidentialité des données et au respect de la vie privée. Supposons que les données à sauvegarder soient des données dites sensibles ou à caractère personnel. Il peut s’agir par exemple de relevés bancaires, de photos personnelles ou encore de résultats médicaux. Dans ce cas, les propriétaires de ces données devront faire confiance au service de stockage en ligne auquel leurs données ont été confiées. Cette confiance repose sur deux points. Le premier concerne la sécurité de l’infrastructure informatique du service cloud lui-même (voir l’illustration ci-dessous, à gauche). Si le serveur sauvegardant vos données possède des failles informatiques (la non-mise à jour du système d’exploitation, l’absence d’antivirus, etc.), une personne malveillante capable d’exploiter ces failles serait alors en mesure de récupérer vos données ou encore de les détruire. Le second point concerne la position du service cloud par rapport aux données qu’il sauvegarde ; rien n’empêche celui-ci de regarder par curiosité ou par intérêt économique les données hébergées sur ses propres serveurs (voir l’illustration ci-dessous, à droite).
Protéger ses données
Afin de protéger ces données externalisées de telles menaces, une première solution est d’utiliser un schéma de chiffrement symétrique. La sécurité d’un chiffrement symétrique repose sur la connaissance d’un secret. Ce secret correspond à la clé secrète permettant à l’utilisateur ou utilisatrice de chiffrer, puis de déchiffrer ses données. Ainsi, si vos données sont exportées sur un service de stockage en ligne, une fois que vous les aurez chiffrées à l’aide d’un schéma de chiffrement et d’une clé secrète, vous aurez alors la garantie que personne ne pourra exploiter vos données puisqu’il faut connaître la clé secrète permettant le déchiffrement. Néanmoins, le fait de chiffrer les données externalisées enlève à l’utilisateur ou utilisatrice la possibilité d’exploiter celles-ci directement en ligne. En effet, traiter ses documents directement en ligne revient à dire que le serveur possède la clé de déchiffrement. Il vous est alors impossible de regarder vos photos, de modifier un document texte, de faire des recherches par mots-clés directement en ligne sur vos documents, etc. Vous devrez donc tout d’abord télécharger toutes vos données depuis le service cloud sur votre ordinateur, les déchiffrer, faire la manipulation souhaitée puis les chiffrer de nouveau avant de les exporter une nouvelle fois sur le service de stockage en ligne. Cette méthode, bien que sécurisée contre les menaces précédemment citées n’est guère pratique.
Une solution consiste alors à utiliser un schéma de chiffrement dit homomorphique. Un tel chiffrement permet d’effectuer les mêmes opérations sur des données chiffrées que sur des données claires. Par exemple, si vous avez créé deux chiffrés : c1 correspondant au message m1 = 2000 et c2 correspondant au message m2 = 18, alors l’addition des deux chiffrés c1 + c2 donnera le message 2018 après déchiffrement. Grâce à un tel chiffrement, plus besoin de télécharger vos données chiffrées et de les déchiffrer pour appliquer l’opération souhaitée. Vous pouvez directement manipuler vos données chiffrées à distance et y appliquer les modifications souhaitées. Hélas, ces chiffrements requièrent un temps de calcul trop important. D’un côté, nous avons donc une solution sécurisée et efficace mais sans fonctionnalités et de l’autre côté, une solution sécurisée avec des fonctionnalités mais inefficace.
Utiliser ses données
Toutefois, il existe un compromis entre sécurité, performance et fonctionnalité pour la fonctionnalité de recherche par mots-clés sur des données chiffrées ; ce sont les schémas de recherche sur données chiffrées, appelés en anglais Searchable Encryptions. La fonctionnalité de recherche par mots-clés sur des données chiffrées va vous permettre de récupérer, parmi une liste de documents chiffrés, ceux contenant les mots-clés que vous recherchez.
Le premier schéma de recherche sur données chiffrées a ainsi été proposé par Song, Wagner et Perrig en 2000 et ne proposait que la recherche via un seul mot-clé. Depuis, de nombreux autres schémas ont été proposés apportant des améliorations. Certains d’entre eux permettent d’ajouter de nouveaux documents tout en offrant la possibilité d’effectuer des recherches, et d’autres schémas permettent d’effectuer des recherches plus complexes, dites booléennes, comme vouloir que deux mots-clés soient présents simultanément dans les documents retournés sans que ceux-ci n’en contiennent un troisième.
Certains schémas de recherche par mots-clés sur des données chiffrées permettent d’effectuer des recherches grâce à la structure même des documents chiffrés, d’autres sont basés sur une structure appelée index inversé. Un index inversé est une structure permettant de ranger un ensemble de documents en fonction des mots-clés qui les composent. Supposons par exemple que nous ayons deux documents nommés d1 et d2, et définis par :
– d1 : « La sécurité informatique est importante »
– d2 : « L’informatique est omniprésente »
Pour construire l’index inversé associé à ces deux documents, il vous suffit de prendre chacun des mots-clés composant ces deux documents et de lui associer le nom des documents qui le contiennent. Avec les deux documents précédents d1 et d2, nous obtenons l’index inversé présenté ci-dessous.
Lorsque vous recherchez les documents contenant le mot-clé informatique, grâce à l’index inversé, vous saurez que les deux documents d1 et d2 contiennent ce mot-clé.
Nous allons maintenant voir comment utiliser la structure de l’index inversé pour effectuer une recherche avec un mot-clé de façon sécurisée. Dans ce cas, vous devez pouvoir effectuer une recherche sur des documents chiffrés sans que le service cloud ne puisse connaître le sens du mot-clef que vous lui avez fourni.
Supposons tout d’abord que vous possédez les deux documents d1 et d2 cités précédemment et que vous souhaitez les externaliser sur un service de stockage en ligne. La première étape pour vous sera de créer ce que nous appelons l’index inversé chiffré associé à cet ensemble documentaire. Pour cela, vous choisissez d’abord deux clés secrètes que nous nommerons k1 et k2. À l’aide d’une fonction dite pseudo-aléatoire associée à la clé secrète k1, vous protègez les mots-clés de l’index inversé (présenté dans la figure ci-dessus) en remplaçant chacun d’eux par la valeur donnée par la fonction aléatoire. Si le mot-clé considéré est informatique, alors la valeur donnée par la fonction pseudo-aléatoire associée à la clé k1 sera notée {informatique}k1. Il est important de comprendre que cette valeur est incompréhensible pour le service cloud, en d’autres termes le mot-clé informatique est remplacé par une valeur d’apparence aléatoire mais dépendant de la clé secrète k1.
Ensuite, vous allez utiliser votre deuxième clé secrète k2 pour chiffrer vos documents, ici d1 et d2. Nous indiquons les chiffrés de ces deux documents à l’aide de la clé secrète k2 par les notations suivantes : d1 * et d2 *. Ainsi, l’index inversé ne fait plus le lien entre les mots-clés et vos documents originaux mais fait le lien entre les mots-clés protégés (i.e. les valeurs pseudo-aléatoires associées aux mots-clés) et vos documents chiffrés. Ces documents chiffrés sont calculés en utilisant par exemple l’algorithme de chiffrement AES avec la clé secrète k2. Nous illustrons l’index inversé chiffré associé aux documents d1 et d2 dans la figure ci-après.
Une fois que cet index inversé est chiffré et que vous avez généré vos documents chiffrés, vous pouvez les exporter sur le service de stockage en ligne (vous n’êtes ensuite pas obligé de conserver les documents originaux sur votre ordinateur). Grâce au chiffrement des documents, ils sont protégés. De plus, l’index inversé chiffré vous permet d’effectuer des recherches par mots-clés sur vos documents chiffrés. En effet, connaissant la clé secrète k1, pour récupérer vos documents contenant le mot-clé « informatique », il vous suffit de calculer la valeur pseudo-alétoire associée à ce mot-clé, i.e. {informatique}k1. Vous envoyez ensuite cette valeur calculée au service cloud. Grâce à l’index inversé chiffré (cf. figure ci-dessus), le service cloud sait que vos documents chiffrés d1 * et d2 * sont associés à cette valeur pseudo-aléatoire et vous les envoie. Avec la deuxième clé secrète k2, vous pouvez alors déchiffrer les deux documents chiffrés reçus correspondant à votre recherche.
Pour conclure
Nous venons de voir que les schémas de recherche sur données chiffrées vous permettent de sauvegarder vos données chiffrées dans le cloud tout en vous permettant d’effectuer des recherches par mots-clés. Aujourd’hui, de nombreuses solutions commerciales telles que CipherCloud, Skyhigh Networks ou encore bitglass proposent un tel service aux internautes. Néanmoins, des recherches récentes ont mis en évidence certaines menaces sur les schémas de recherche sur données chiffrées basées sur les index inversés. En effet, si le serveur hébergeant ces documents chiffrés connaît un petit échantillon de documents qu’il héberge, il sera alors en mesure d’obtenir d’autres informations sur les autres documents. La recherche actuelle porte sur des contre-mesures et de nouveaux modèles de schémas de recherche, afin d’éviter de telles fuites d’informations pour garantir la sécurité des données personnelles hébergées dans le cloud.
[1] David Cash, Stanislaw Jarecki, Charanjit S. Jutla, Hugo Krawczyk, Marcel-Catalin Rosu, and Michael Steiner. Highly-scalable searchable symmetricencryption with support for boolean queries. In Advances in Cryptology-CRYPTO 2013 – 33rd Annual Cryptology Conference, Santa Barbara, CA, USA, August 18-22, 2013. Proceedings, Part I, pages 353–373, 2013.
[2] Matthieu Giraud, Alexandre Anzala-Yamajako, Olivier Bernard, and Pascal Lafourcade. Practical passive leakage-abuse attacks against symmetric searchable encryption. In Proceedings of the 14th International Joint Conference on e-Business and Telecommunications (ICETE 2017) – Volume 4 : SECRYPT, Madrid, Spain, July 24-26, 2017., pages 200–211, 2017.
[3] Oded Goldreich, Shafi Goldwasser, and Silvio Micali. How to construct random functions. J. ACM, 33(4) :792–807, August 1986.
[4] Seny Kamara, Charalampos Papamanthou, and Tom Roeder. Dynamic searchable symmetric encryption. In the ACM Conference on Computer and Communications Security, CCS’12, Raleigh, NC, USA, October 16-18, 2012, pages 965–976, 2012.
[5] Dawn Xiaodong Song, David A. Wagner, and Adrian Perrig. Practical techniques for searches on encrypted data. In 2000 IEEE Symposium on Security and Privacy, Berkeley, California, USA, May 14-17, 2000, pages 44–55, 2000.
Newsletter
Le responsable de ce traitement est Inria. En saisissant votre adresse mail, vous consentez à recevoir chaque mois une sélection d'articles et à ce que vos données soient collectées et stockées comme décrit dans notre politique de confidentialité
Niveau de lecture
Aidez-nous à évaluer le niveau de lecture de ce document.
Votre choix a été pris en compte. Merci d'avoir estimé le niveau de ce document !
Matthieu Giraud