Le chiffrement protège-t-il vraiment d'une fuite de données ?
Quand on entend parler du RGPD, on entend parfois "chiffrez, vous n'aurez plus rien à craindre". Cette phrase a tellement été répétée qu'elle en a perdu de son sens, et pourtant le chiffrement est (sans jeu de mots) une des clés de réponse à la protection des données. Décortiquons l'origine de cette phrase, et démêlons le vrai du faux, parce que tous les "chiffrements" ne se valent pas...
Une protection proportionnée
Le RGPD impose aux entreprises de prendre des mesures de sécurité adaptées aux risques. L'une de ces mesures peut être du chiffrement, pourtant à en croire certains éditeurs, le chiffrement est la réponse à tous les maux.
Pour analyser les discours des éditeurs, il faut revenir aux fondamentaux : de quoi se protège-t-on ? Quel risque veut-on couvrir ?
Dans le cas du RGPD, on veut couvrir le risque d'une fuite de données et en particulier du besoin de notifier ces fuites de données. C'est là que les discours deviennent simplistes. Il est précisé que la notification de fuite d'une donnée n'est pas nécessaire si elle a été rendue incompréhensible pour toute personne non autorisée avec des mesures telles que du chiffrement. Cela est souvent raccourci en "tu as chiffré, tu es donc exempté de notifier !".
Cela est tellement simplifié que cela en devient faux ! Il faut donc faire très attention à ce que signifie réellement le "chiffrement" proposé par chaque éditeur.
Différents chiffrements contre différents risques
Des chiffrements il y en a beaucoup... Aujourd'hui, n'importe qui peut se targuer de faire du chiffrement, ne serait-ce qu'avec du HTTPS (le petit cadenas dans votre navigateur). Nous allons donc faire un petit tour d'horizon des types principaux de chiffrement et pour chacun voir contre quelles menaces ils protègent.
Chiffrement de flux
Le chiffrement de flux consiste à protéger une connexion entre un point A et un point B contre une écoute passive ou une altération de la connexion.
Cela protège d'une personne malveillante sur le réseau pouvant écouter ou altérer des connexions entre A et B.
Cela ne protège pas les données une fois arrivées chez A ou B.
On en utilise tous les jours avec HTTPS dès que l'on navigue sur Internet. Cela est devenu un standard, ne pas en faire est un grave défaut de sécurité.
D'autres chiffrements de flux sont possibles comme du VPN, du SSH, etc.
Chiffrement de poste
Le chiffrement de poste consiste à chiffrer les disques durs ou certains répertoires des disques.
Cela protège les données en cas de vol d'ordinateur ou de disque dur, l'attaquant ne pourra pas alors pas lire le contenu sans connaître le mot de passe ou la clé.
Cela ne protège pas les données une fois l'ordinateur allumé, le système d'exploitation ayant accès à toutes les données en clair.
Les technologies les plus connues sont BitLocker, FileVault ou Luks et sont assez simples à mettre en oeuvre.
Chiffrement de base de données
Le chiffrement de base de données est le plus souvent implémenté en désignant quelques champs sensibles en base (comme l'email, ou le nom) qui seront chiffrés avec une clé stockée autre part. La raison pour laquelle on ne chiffre pas tous les champs, est qu'une fois chiffré, on ne peut plus exploiter ce champ dans des opérations complexes comme de la recherche... Cette méthode n'est donc pas applicable sur l'ensemble de la base de données.
Cela protège les champs chiffrés d'un accès malveillant à la base seule ou d'une fuite de sauvegarde de base de données.
Cela ne protège pas les données une fois exploitées par l'application qui utilise la base de données, puisque cette application aura nécessairement besoin de la clé pour déchiffrer.
Cela est une bonne pratique qu'il faut appliquer dès qu'on le peut, parce que les fuites d'identifiants de bases de données sont malheureusement courantes.
(J'ai volontairement omis de mentionner les techniques dites de tokenisation parce qu'elles n'utilisent pas de chiffrement à proprement parler et sont cryptographiquement très faibles.)
Chiffrement côté serveur
Le chiffrement côté serveur est très vague. Très concrètement, cela englobe tous les systèmes de chiffrement qui détiennent les clés de déchiffrement et les données chiffrées au même endroit. De façon imagée, cela revient à poser une serrure sur une porte blindée, mais oublier la clé dessus.
Cela protège les données de quelques faiblesses internes de l'hébergeur (une fuite interne, etc.)
Cela ne protège pas des risques courants de l'infrastructure du client (accès malveillant à un compte, phishing, vol, etc.) ou de failles de sécurité de l'hébergeur qui pourrait mal authentifier certaines requêtes.
Nous en avons parlé largement dans notre article sur l'inefficacité du chiffrement proposé par les services de stockage cloud.
Chiffrement avec tiers de confiance
Le chiffrement avec tiers de confiance est une méthode consistant à séparer la donnée chiffrée de sa clé et de placer cette clé en séquestre chez un tiers de confiance. La donnée chiffrée transite elle par ses canaux habituels. La clé ne sera fournie à l'utilisateur final qu'après authentification par le tiers de confiance au moment où le déchiffrement est nécessaire, et sera envoyée par un canal auxiliaire. Le déchiffrement s'effectue donc sur le poste de l'utilisateur, et à aucun moment un serveur n'a accès à la fois aux données chiffrées et aux clés.
Cela protège d'une fuite de données de l'hébergeur ou du tiers de confiance.
Cela ne protège pas de fuites de données simultanées de l'hébergeur et du tiers de confiance.
Le scénario de fuite conjointe étant peu probable, dans la majorité des cas, une fuite des documents chiffrés chez l'hébergeur n'engendre pas de notification de fuite aux personnes concernées.
Chiffrement de bout-en-bout
Le chiffrement de bout-en-bout est le type de chiffrement le plus strict. On appelle chiffrement de bout-en-bout un cryptosystème dans lequel seuls l'émetteur et les destinataires ont accès aux clés de déchiffrement des données chiffrées. Cela diffère du mécanisme précédent où un tiers de confiance avait ces clés.
Cela protège de toutes les fuites des données de l'hébergeur.
Cela ne protège pas d'une compromission de l'ordinateur les déchiffrant.
À moins d'une compromission des ordinateurs des utilisateurs, une fuite des document chiffrés chez l'hébergeur n'engendre pas de notification de fuite aux personnes concernées.
En résumé
Vous l'avez compris, mettre en place du chiffrement dans le seul but de cocher une case ne vous aidera pas à sécuriser vos données. Ce n'est pas un choix binaire entre "chiffré" ou "pas chiffré". Il faut être conscient des limites de chaque technologie pour ne pas se faire bluffer par des éditeurs peu scrupuleux.