les 5 mins du professeur Audenard - épisode 13 : le chiffrement à clefs convergentes


Voir la vidéo directement sur Dailymotion

Les services comme DropBox, Box, SkyDrive, GoogleDrive ou encore MEGA font tout pour nous encourager à mettre nos données dans le Cloud : tous nous offrent gracieusement plusieurs Giga-octets d’espace pour y stocker fichiers, films ou musique. Rajoutez-y quelques applications de synchronisation sur PC, Smartphones ou tablettes et le tour est joué !

comment optimiser son stockage grâce à la déduplication 

Mais comment ces services font-ils pour proposer gratuitement de tels espaces de stockage à des centaines de milliers de clients ? La réponse est simple : ils font de la déduplication.

Sans le dire (au moins pour certains d’entre eux), ils optimisent leur espace de stockage en utilisant des mécanismes de « déduplication ». Celle-ci permet de ne stocker sur disque qu’une seule et unique copie d’un même fichier tout en le « liant » à plusieurs utilisateurs différents.

Si 30.000 utilisateurs de DropBox ont le même fichier, celui-ci ne sera stocké qu’une seule et unique fois. Simple non ?

le chiffrement des données est l’ennemi des services Cloud

OK, mais si chaque utilisateur chiffre son fichier avant de l’envoyer cela ne fonctionne plus. Et oui, si chaque utilisateur chiffre un fichier avec une clef unique (ce qui est normalement le cas), le fichier chiffré sera différent pour chaque utilisateur : aucune déduplication ne sera donc possible !

Le chiffrement des données est donc contraire aux « optimisations cachées ou à la déduplication des fichiers » des services de stockage de fichiers dans le Cloud. En outre, ils ne pourront analyser le contenu du fichier pour vous proposer des publicités ou autres services…

Voilà deux très bonnes raisons pourquoi rares sont ceux qui proposent des fonctions de chiffrement... A moins de ruser et chiffrer de façon habile et c’est là que le chiffrement convergent rentre en scène.

le chiffrement convergent ou « chiffrer avec un code de hachage »

Le chiffrement convergent (ou « chiffrement à clefs convergentes ») est basé sur un principe très simple : la clef qui sera utilisée lors de la phase de chiffrement n’est pas aléatoire mais dérivée du fichier via une fonction de hachage cryptographique (par exemple SHA1).

Ainsi si Bob et Jane ont chacun de leur côté le même fichier « video.mp4 », lorsqu’ils calculeront le code de hachage de celui-ci, ils obtiendront le même résultat : ce sera la clef de chiffrement et celle-ci sera identique pour Bob et Jane.

Ensuite, chacun chiffrera son fichier (via un algorithme comme AES) en utilisant comme clef le code de hachage calculé précédemment. Comme à la base ils avaient le même fichier « video.mp4 », ils ont donc généré le même code de hachage et donc le fichier résultant de la phase de chiffrement sera le même ! Simple & efficace.

du contenu chiffré mais compatible avec la déduplication

Comme le fichier que Bob et Jane enverront sur le Cloud est identique (car chiffré avec une clef convergente), le service de Cloud pourra donc optimiser le stockage via des mécanismes de déduplication (une seule et unique copie du fichier sera stockée – ce fichier étant marqué comme appartenant à Jane et Bob).

Comme le fichier est chiffré, le service de Cloud ne pourra avoir accès au contenu du fichier (car il lui sera impossible de « calculer » ou « deviner » en inverse la clef de chiffrement – les codes de hachage n’étant pas « bijectif »). Pour plus de détails sur les codes de hachage, je vous encourage à voir cet autre épisode : « les 5 minutes du professeur Audenard - épisode 12 : les fonctions de hachage ».

la déduplication : des risques pour la confidentialité et la vie privée

Le chiffrement à clefs convergentes ne permet pas de s’affranchir des problèmes inhérents à la déduplication car il restera possible de savoir si un fichier est présent ou non dans un Cloud, surtout si il est chiffré via des clefs convergentes.

Prenons le scénario suivant : une société s’est fait voler des fichiers sensibles (ex : une archive ZIP de 300Mo contenant le code source d’un logiciel très onéreux). Elle voudrait savoir si ce fichier a été déposé sur un Cloud.

En essayant d’envoyer ce fichier sur un Cloud faisant de la déduplication, la société sera en mesure de savoir si son fichier y est déjà présent ou non. Comment ? C’est tout simple : si le fichier y est déjà présent, alors le service de Cloud lui dira « pas de besoin de m’envoyer le fichier car j’en ai déjà une copie» (si ce message n’est pas explicitement donné, la société pourra le deviner car le transfert sera étrangement rapide…).

limiter les risques de la déduplication

Pour limiter les risques de la déduplication, différentes options sont envisageables :

  • utiliser un service de Cloud privé
  • limiter la déduplication à un groupe restreint d’utilisateur, voire à un seul utilisateur
  • ne pas faire de déduplication

Rien de magique : on ne peut pas avoir en même temps le beurre et l’argent du beurre.

Plus sérieusement, il y a quelques techniques permettant de faire de la déduplication de façon sécurisée : celles-ci pourraient être l’objet d’un article en tant que tel, je ne les détaillerai donc pas …

équilibre entre « optimisation du stockage » et « confidentialité » 

Il est important de bien retenir que le chiffrement convergent permet uniquement de rendre les données opaques pour le fournisseur de Cloud .  Le chiffrement à clefs convergentes ne permet pas de se protéger contre les risques liés à la vie privée (« est-ce qu’un fichier donné est présent ou pas dans le Cloud ?»).

Pour avoir les deux en même temps (opacité des données pour le Cloud + impossibilité de savoir si un fichier est présent dans le Cloud), la solution classique est de chiffrer le fichier avec une clef de chiffrement « classique » (c’est-à-dire unique et aléatoire à chaque fichier). Mais dans ce cas il ne sera pas possible de dédupliquer les données, ce qui aura pour effet d’augmenter la consommation de l’espace disque et donc des coûts à plus ou moins long terme.

Un utilisateur avertit se renseignera donc sur les pratiques de son fournisseur de Cloud…. S’il fait de la déduplication il faut creuser un peu plus profond que les 5 centimètres du « c’est sécurisé, ne vous inquiétez pas ».

A très bientôt pour un autre épisode des 5mins du professeur Audenard !

Jean-François Audenard (aka Jeff)

Jean-François Audenard

Au sein de la direction sécurité du Groupe Orange, je suis en charge de la veille sécurité et de la sensibilisation à la sécurité. Franchise, optimisme et bonne-humeur sont mes moteurs quotidiens