De plus en plus d’entreprises et de particuliers se tournent vers le cloud, mais la sécurité reste encore le principal frein à son adoption. L’inquiétude la plus souvent exprimée porte sur la perte de contrôle de ses données, notamment si le fournisseur cloud (Cloud Service Provider, CSP) est étranger, comme c’est le cas pour les géants du cloud public Amazon (AWS), Microsoft (Azure), Google (GCP).
Les évènements redoutés sont multiples : saisie des données par le gouvernement américain (cf. Cloud Act, NSA), compromission du cloud par un état hostile (cf. cyberattaques venant de Russie ou Corée du Nord), atteinte à la confidentialité par le personnel du CSP, etc.
Cet article examine le cas d’usage le plus simple : le recours au cloud pour le stockage de fichiers, dans lequel le client consomme une offre SaaS de type « drive » (OneDrive, Google Drive, Dropbox) ou de type « stockage objet » (AWS S3, Azure Blob Storage).
Comment protéger la confidentialité des données face aux menaces évoquées ? La réponse repose naturellement sur le chiffrement, mais pas de n’importe quelle façon !
Examinons plusieurs alternatives, en ordre croissant de sécurité.
Données en clair : passons rapidement, cela n’offre aucune sécurité, ne serait-ce que face à un administrateur système curieux au sein du fournisseur.
Chiffrement côté serveur (Server Side Encryption, SSE) avec des clés de chiffrement gérées par le CSP : dans ce cas, l’hébergeur cloud chiffre lui-même les données avec ses propres clés au moment de les stocker, sans que l’utilisateur ait à faire autre chose que cocher une case (AWS), quand ce n’est pas activé d’office (Azure). Cela protège de certaines menaces basiques, comme la réutilisation des supports de stockage d’un client A pour un client B, ou le vol des disques dur dans un data center. Cependant, il est clair que, dans la mesure où le fournisseur gère les clés, cela n’apporte qu’une confiance limitée.
Chiffrement côté serveur (SSE) avec les clés de chiffrement fournies par le client : autrement mentionnée sous le nom de Bring Your Own Key (BYOK), cette méthode n’apporte pas à mon sens une vraie sécurité supplémentaire par rapport à la précédente. Certes, les CSPs déclarent dans ce cas qu’ils ne stockent pas les clés fournies par les clients, mais ils pourraient techniquement le faire s’ils le voulaient ou s’ils en étaient contraints.
Chiffrement côté client (Client Side Encryption, CSE) : connues aussi comme zero-knowledge, cette alternative est sans doute la plus sûre. Le client chiffre les données avec sa propre clé avant de les externaliser dans le cloud ; le CSP n’a à aucun moment la connaissance de cette clé. Dans ce cas, même un attaquant qui arriverait à compromettre l’intégralité d’un cloud, ne pourrait récupérer que des données chiffrées inintelligibles. La confidentialité des données est assurée tant que le endpoint du client n’est pas lui-même compromis.
Aucun doute, le chiffrement côté client est *la* solution pour protéger ses données dans le cloud.
Certains fournisseurs le proposent déjà, de façon gratuite ou payante : Sync, pCloud, Mega, Icedrive, SpiderOak. Notons que Icedrive ne fait même pas confiance à AES, qu’il considère suspect, lui préférant Twofish de Bruce Schneier.
Cela étant dit, le CSE ne décolle pas encore et se limite principalement au cas d’usage d’un backup vers le cloud. Pourquoi cela ?
Sa faiblesse est le revers de la médaille de sa force : vu que le serveur ne voit pas les données en clair, il n’est pas capable de les indexer et d’en extraire la valeur. Cela limite grandement les usages métier : même une simple recherche de mot-clé dans un fichier devient problématique côté serveur. L’indexation finit par être réalisée à travers un mirroring des données côté client, sur sa copie locale en clair, ce qui n’est pas vraiment dans l’esprit du cloud.
Sommes-nous donc obligés de sacrifier les performances de calcul des serveurs cloud, et réaliser le « heavy-lifting » côté client ?
Il semblerait que non, car de nouvelles techniques émergent, permettant au serveur de réaliser une recherche directement sur les données chiffrées. Une méthode très prometteuse est expliquée dans le papier téléchargeable sur [1] : elle se base sur la génération d’un index chiffré par le client, qui permet au serveur de restituer les documents correspondants, sans connaître ni leur contenu, ni même le mot-clé recherché.
Ces recherches vont sans doute continuer et nous donnent un réel espoir de pouvoir conjuguer la puissance du cloud avec la protection des données.
[1] https://info.ionic.com/hubfs/IonicDotCom/Resources/Assets/Securing%20the%20Cloud%20with%20Client-Side%20Encryption.pdf