Accueil > Chiffrement homomorphe : comment protéger les données personnelles et garantir leur non déchiffrement ?
Amine Kaabachi
7 octobre 2021

Chiffrement homomorphe : comment protéger les données personnelles et garantir leur non déchiffrement ?

Chiffrement homomorphe : comment protéger les données personnelles et garantir leur non déchiffrement ?

La façon dont nous utilisons et partageons l’information a évolué de manière exponentielle, comme jamais auparavant. Les données personnelles en particulier, bien que protégées par de nombreuses réglementations, sont toujours considérées à la fois comme un moteur et un frein à la transformation digitale. Cette dualité est principalement due au fait qu’on peut les exploiter pour renforcer et améliorer de nombreux aspects de l’entreprise. Cependant, en cas de fuite, ces données peuvent constituer une véritable menace.

Les entreprises doivent soit faire confiance aux fournisseurs Cloud, soit garder les données enfermées dans leurs propres data centers et donc disposer d’une capacité de traitement limitée. Pour celles qui optent pour le Cloud, la principale stratégie consiste à crypter les données. Bien qu’elles puissent être cryptées pour garantir la confidentialité, les systèmes de chiffrement modernes exigent que les données soient décryptées pour pouvoir être utilisées. Par conséquent, les données deviennent vulnérables pendant le processus de calcul.

Le chiffrement homomorphe offre une solution transparente pour externaliser les données en toute sécurité.

 

Livre blanc Cellenza sécurité des données et transparence

 

Comprendre le chiffrement homomorphe

 

Un schéma de chiffrement homomorphe est un système de chiffrement qui permet d’effectuer des calculs sur les données sans les déchiffrer. C’est possible grâce à une propriété mathématique dite homomorphe : le déchiffrement du résultat d’une opération sur des données chiffrées donne le même résultat que cette opération sur les données non chiffrées.

Prenons un exemple : (x,y) est un couple d’entiers et E une opération de chiffrement.
Une fois que x et y sont chiffrés par l’opération E (soit E(x) et E(y)) pour avoir la valeur x + y, il faut déchiffrer E(x) et E(y) avant de pouvoir réaliser l’opération.

En revanche, si E est homomorphe, on a alors E(x + y) = E(x) + E(y). On obtient ainsi directement la valeur de (x + y) sans avoir eu besoin de déchiffrer x et y pendant l’opération. Le résultat est ensuite disponible en le déchiffrant.
Dans cet exemple E représente un chiffrement homomorphe additif.

A noter : RSA basique (sans padding) est un chiffrement homomorphe multiplicatif.

En termes de complexité, le chiffrement homomorphe ne peut pas effectuer efficacement un grand nombre de multiplications et il ne peut effectuer que des additions et des multiplications, ce qui peut rendre certains calculs plus difficiles à réaliser.

Le champ d’application de ce type de chiffrement est immense. Prenons un exemple réel où nous voulons créer un système de vote pour un grand nombre d’utilisateurs. Un système classique serait plein de pièges possibles sachant qu’à un moment donné, vous aurez les données de vote de tout le monde (ou d’un sous-ensemble) pour effectuer l’addition de manière rapide et efficace permettant de connaitre l’évolution du vote en temps réel.

 

cryptage decryptage des données

Si un pirate informatique accède au système qui effectue la somme des votes à l’étape 3, il sera en mesure d’accéder aux données des votes malgré les mesures de sécurité prises aux étapes 1 et 2 (tunnel sécurisé et chiffrement des votes avant leur stockage). Ces risques poussent à placer l’infrastructure de vote dans un espace contrôlé, ce qui réduit la scalabilité et les performances de la solution.

Voyons comment le chiffrement homomorphe peut contribuer à améliorer la solution précédente :

schéma de chiffrement homomorphe des données

Les étapes 1 et 4 doivent se dérouler dans un espace contrôlé et nécessitent que la clé soit disponible localement ou via un processus tiers. Ceci est simple à réaliser en raison de la nature distribuée (par exemple avec une application mobile ou des terminaux de vote) de l’étape 1 et de la faible complexité (en termes de ressources de calcul) de l’étape 4.

Les étapes 2 et 3, qui nécessitent beaucoup plus de ressources en termes de stockage et de calcul, peuvent se dérouler dans un espace non contrôlé et ne nécessitent aucune clé. Cela permet de mettre en place des scénarios d’externalisation pour gérer les charges, pour optimiser les coûts et pour profiter de l’efficacité des services data sur le Cloud.

 

Parenthèse historique sur le chiffrement homomorphe

 

Le chiffrement homomorphe existe depuis un certain temps, mais ce n’est que récemment qu’il a pu être utilisé de manière pratique. L’une des premières tentatives pour effectuer des opérations directement sur des données chiffrées a été le « circuit brouillé de Yao », qui date de 1982.

Dans son étude, Andrew Yao a utilisé le « circuit de Yao » pour résoudre le célèbre problème du millionnaire de Yao. L’objectif est de permettre à deux millionnaires de déterminer lequel est le plus riche sans savoir combien d’argent chacun possède.
Malheureusement, l’efficacité de la solution de Yao était très faible et de nombreuses ressources étaient nécessaires pour obtenir le résultat.

À sa suite, de nombreux autres systèmes de chiffrement homomorphes ont vu le jour, mais avec de sérieuses limitations. Un problème commun était que ces systèmes ne permettaient d’exécuter qu’un seul type d’opération ou un nombre limité d’opérations sur les données cryptées, ce qui avait bien sûr un impact important sur l’aspect pratique. Il est intéressant de noter qu’il s’agissait de systèmes modernes bien adoptés comme RSA et El Gamal. Il est vrai que le RSA basique (sans padding) présente une propriété homomorphe multiplicative mais malheureusement, il n’est pas sémantiquement sûr. Il est vulnérable à des techniques de cryptanalyse comme la CCA (attaque par cryptogramme choisi). Ainsi, afin de garantir la sécurité, RSA a renoncé à ses propriétés homomorphes.

Les restrictions rencontrées dans les schémas de chiffrement homomorphe ont conduit à les classer en trois groupes :

  • Chiffrement partiellement homomorphe (PHE) : permet un seul type d’opération avec un nombre illimité de fois.
  • Chiffrement quelque peu homomorphe (SWHE) : permet certains types d’opérations avec un nombre limité de fois.
  • Chiffrement totalement homomorphe (FHE) : permet tous les types d’opérations avec un nombre illimité de fois.

 

Ce n’est qu’en 2009 que Craig Gentry a publié sa thèse de doctorat, qui décrivait pour la première fois un schéma de chiffrement entièrement homomorphe. Bien qu’encore peu pratique, il a présenté, à travers ses recherches, un cadre permettant de réaliser le « Chiffrement totalement homomorphe ». Cela a suscité un grand intérêt au sein de la communauté universitaire et de nombreuses améliorations et nouveaux schémas ont vu le jour par la suite.

 

Timeline HE FHESource: A Survey on Homomorphic Encryption Schemes: Theory and Implementation – ABBAS ACAR, HIDAYET AKSU, and A. SELCUK ULUAGAC, Florida International University MAURO CONTI, University of Padua

 

La proposition de Gentry était basée sur les réseaux idéaux. Bien que très prometteuse, elle était difficile à mettre en œuvre en raison de ses concepts mathématiques complexes et de son coût de calcul. Par conséquent, les réseaux sont devenus un sujet brûlant au sein de la communauté cryptographique. En particulier, un problème basé sur les réseaux gagne de plus en plus en popularité, principalement en raison de sa dureté post quantique : il s’agit de Learning With Errors (LWE).

Peu de temps après la thèse de Gentry, un FHE sur les entiers a été introduit par Van Dijk et d’autres co-auteurs, qui visait la simplicité. Enfin, un FHE différent a été proposé entre autres par Lopez-Alt, basé sur le système de chiffrement à clé publique NTRU (basé sur un réseau), qui a attiré l’attention en raison de son efficacité.

 

Livre blanc Cellenza sécurité des données et transparence

 

État de l’art et implémentations du chiffrement homomorphe

 

Le schéma de chiffrement homomorphe le plus efficace lorsqu’il s’agit d’effectuer les mêmes opérations sur plusieurs textes chiffrés à la fois est le schéma Brakerski-Gentry-Vaikuntanathan (BGV). Les schémas Brakerski/Fan-Vercauteren (BFV) et Cheon-Kim-Kim-Song (CKKS) se partagent la deuxième place en termes d’efficacité. BGV est cependant plus difficile à utiliser.

BGV, BFV, et CKKS sont additivement et multiplicativement homomorphes. Il n’y a pas de division, pas d’exponentiation d’un nombre par un nombre chiffré, pas d’opérations non polynomiales. Dans BGV et BFV, les calculs ne peuvent être effectués que sur des entiers. Dans CKKS, les calculs peuvent être effectués sur des nombres complexes avec une précision limitée.

Une liste de bibliothèques de FHE open-source mettant en œuvre des schémas de FHE est fournie ci-dessous. Une liste à jour des implémentations de chiffrement homomorphe est également maintenue par la communauté sur GitHub.

 

Comparatif bibliothèques de FHE open-source

D’autres alternatives au chiffrement homomorphe

Il existe d’autres alternatives au chiffrement homomorphe qui permettent de résoudre les mêmes problèmes mais avec des approches différentes :

  • Secure Multi Party Computation (SMPC) est un paradigme différent qui repose davantage sur la communication entre les participants. Les données peuvent être divisées et chaque acteur n’envoie que quelques parties de ses données, de sorte que les autres ne peuvent pas reconstruire les données initiales, mais peuvent participer, et faire des calculs sur des parties de données. Ensuite, une fois que chaque partie a terminé, tout peut être agrégé et le résultat de la sortie est connu de chaque partie.
  • Les « Trusted Execution Environments » (TEE) permettent le développement de logiciels grâce à des garanties matérielles de confidentialité. La technologie SGX d’Intel fournit une mise en œuvre d’un tel système. Cette technologie permet d’exécuter des programmes de manière isolée des autres programmes. Toutes les données entrantes et sortantes sont cryptées, et les calculs en clair ne se font qu’à l’intérieur de l’environnement isolé. Le code et l’intégrité de l’environnement peuvent ensuite être vérifiés en externe.

Par rapport au TTE, le calcul sécurisé via le chiffrement homomorphe ou les SMPC présentent des compromis en termes de déploiement, de sécurité et de performances. Pour les charges de travail simples (telles que les sommations simples, les polynômes de faible degré ou les cas simples de prédiction d’apprentissage automatique (CKKS)), les deux approches sont prêtes à être utilisées dans la pratique, mais pour les calculs riches tels que les analyses SQL complexes ou l’apprentissage automatique, seule l’approche TEE est actuellement suffisamment pratique pour de nombreux scénarios de déploiement dans le monde réel.

 

D’autres contenus pour aller plus loin

Pour en savoir plus sur la gestion sécurisée et transparente des données, nous vous invitons à télécharger notre livre blanc « Entreprises : quelles pratiques pour sécurisée vos données » ?

Retrouvez également tous les articles de cette série :

 

Sans oublier le replay de notre webinaire inédit :

Nos autres articles
Commentaires
Laisser un commentaire

Restez au courant des dernières actualités !
Le meilleur de l’actualité sur le Cloud, le DevOps, l’IT directement dans votre boîte mail.