Zama et la révolution du chiffrement homomorphe

Zama est une société française développant en open source des solutions de chiffrement pleinement homomorphe pour les réseaux blockchains et l’intelligence artificielle. Ses quartiers généraux sont basés à Paris, mais une grande partie de l’équipe travaille à distance. Elle comprend 78 membres de 22 nationalités différentes.

Nous présenterons dans cette article la notion de chiffrement homomorphe, la suite d’outils développés par Zama, et les applications concrètes de cette véritable révolution cryptographique.

Zama en quelques mots

Zama propose de véritables outils de chiffrement de bout en bout, indépendants des plateformes et des applications. C’est l’un des défis auxquels doivent répondre les concepteurs des applications du Web actuel. En effet, Internet regorge d’applications qui n’assurent que partiellement la confidentialité des données utilisateur :

  • Failles de sécurité diverses ;
  • Services de cloud mal sécurisés ;
  • Blockchains publiques dévoilant trop d’informations ;
  • Sans oublier la surveillance croissante des États, des organismes de régulation et des grandes sociétés.

L’entreprise développe une suite logicielle axée sur la confidentialité des données à traiter, en se basant sur le chiffrement homomorphe. Il s’agit d’un outil cryptographique puissant, que nous allons décrire plus bas. Grâce à Zama, il sera donc possible d’intégrer des solutions de chiffrement de bout en bout pour toutes les applications Web2 et Web3.

Typiquement, les applications utilisant des techniques de chiffrement fonctionnent de la manière suivante :

  • Les données sont chiffrées côté client, et le restent donc lors de leur transit ;
  • Elle sont ensuite déchiffrées côté serveur lors de leur traitement ;
  • Enfin, la réponse est à nouveau chiffrée côté serveur, puis expédiée à l’utilisateur, qui la déchiffre côté client.
Chiffrement - Le paradigme actuel de la protection des données
Le paradigme du chiffrement actuel : les données sont en clair lors de leur traitement.

Il s’agit du talon d’Achille des systèmes de chiffrement actuels. En effet, c’est lors de l’étape de traitement des données déchiffrées que les hackers dérobent ces dernières. C’est ici qu’intervient Zama, grâce au chiffrement pleinement homomorphe.

L’équipe de Zama

Le CEO de Zama est le Dr. Rand Hindi, entrepreneur ayant investi dans plus de 50 compagnies, dans des secteurs allant de l’intelligence artificielle aux technologies médicales. Il est titulaire d’un BSC en sciences informatiques et d’un PhD en bioinformatique. Entre autres, Rand Hindi est le créateur de la startup Snips, qui propose une technologie de traitement de la voix par intelligence artificielle.

Quant au CTO de Zama, il s’agit du Dr. Pascal Pailler, chercheur et entrepreneur dans la cryptographie avec plus de 25 ans d’expérience. Le responsable scientifique, le Dr. Marc Joye, est l’un des inventeurs du schéma de signature de groupe ACJT et du système de chiffrement homomorphe de Joye-Libert. Zama compte également parmi ses administrateurs :

  • Dr. Agnès Leroy (experte en ingénierie logicielle et en programmation GPU) ;
  • Nigel Smart (chercheur en cryptographie) ;
  • Jeremy Bradley (COO).

L’entreprise s’engage également auprès de plusieurs communautés open source, et compte comme investisseurs Multicoin Capital, Lunar Ventures, Protocol Labs et Metaplanet.

La suite logicielle proposée par Zama

Actuellement, la suite open source développée par Zama regroupe 4 modules :

  • L’implémentation en Rust de leur cryptosystème de chiffrement pleinement homomorphe ;
  • Le compilateur – Concrete ;
  • Un outil de machine learning confidentiel – Concrete ML ;
  • Une machine virtuelle pour Ethereum (fhEVM) intégrant le chiffrement homomorphe.

Nous allons présenter ces différents outils, mais avant tout, il nous faut mieux comprendre la raison d’être et le fonctionnement du chiffrement homomorphe. Ensuite, nous citerons plusieurs cas d’usages proposés par Zama.

Le chiffrement homomorphe

En mathématiques, un homomorphisme est l’application d’un ensemble dans un autre – chaque ensemble possédant sa propre loi de composition – telle que l’image d’un composé de deux éléments est le composé des images de ces éléments.

Concrètement, le chiffrement homomorphe total permet d’utiliser des services en ligne sans avoir à dévoiler ses données personnelles. Les données sont chiffrées côté client, et le restent côté serveur. Aucune entreprise ou fournisseur de service ne peut donc y avoir accès.

Ce type de chiffrement (full homomorphic encryption ou FHE) permet de traiter des données sans les déchiffrer.

Cela n’affecte aucunement l’expérience utilisateur et ouvre donc la voie à une toute nouvelle gamme de services et d’applications respectueux de la vie privée et des données personnelles des utilisateurs. Nous reviendrons sur ces nombreux cas d’usage dans cet article.

Zama fait le pari de l’évolution future des protocoles d’Internet basée sur le chiffrement homomorphe complet.

Par exemple, le protocole HTTP permet de communiquer entre un client et un serveur. Il n’y a pas de chiffrement des données, qui transitent en clair. Le protocole HTTPS les chiffre côté client, les obfusque durant leur transfert, mais le déchiffrement s’effectue côté serveur, pour leur traitement. Zama vise l’arrivée de l’HTTPZ, un protocole chiffrant véritablement les données de bout en bout. Cela rendrait la communication en ligne totalement confidentielle par conception, au niveau du protocole.

Comme nous le verrons, le chiffrement homomorphe peut-être utilisé dans de nombreux domaines technologiques, allant des réseaux neuronaux aux smart contracts.

Le FHE, Graal de la cryptologie

Tout comme les preuves à divulgation nulle de connaissance, le chiffrement homomorphe est l’une des prouesses cryptographiques les plus impressionnantes. Ce domaine de recherche majeur en cryptologie est particulièrement complexe. Bien que le concept soit apparu dès les années 70, les premiers algorithmes ne voient le jour que des décennies plus tard.

Les systèmes de chiffrement homomorphe ont des propriétés algébriques particulières. Ils permettent de commuter certaines opérations mathématiques. C’est ce qui donne la possibilité d’effectuer lesdites opérations sur des données chiffrées. Une fois le résultat déchiffré, il est identique au résultat qui eût été obtenu sur les mêmes données en clair.

Zama - Historique du chiffrement homomorphe
Histoire du chiffrement homomorphe et des différents schémas.

Rappelons que les systèmes de chiffrement sont vieux comme le monde. L’être humain a toujours eu besoin de préserver sa vie privée de l’intrusion de tiers, et de communiquer de façon confidentielle. La cryptologie n’a eu de cesse d’évoluer; cependant, les systèmes de chiffrement ont longtemps présenté une contrainte majeure : il était nécessaire de déchiffrer les données pour les traiter, c’est-à-dire y effectuer des calculs.

Les applications actuelles du chiffrement homomorphe sont multiples, allant de l’authentification au cloud computing confidentiel. Zama compte aller plus loin, et pour comprendre leur ambitieux projet, il nous faut explorer différents concepts.

Données en clair (plain text) et texte chiffré (ciphertext)

Le principe de l’homomorphisme est de transformer une structure algébrique entre une autre, tout en conservant les relations mathématiques existant entre les éléments des deux ensembles. Concrètement, les calculs effectués sur une ensemble de données en clair (plain text) donneront le même résultat que ces mêmes calculs effectués sur les données chiffrées (ciphertext), une fois le résultat desdits calculs déchiffrés. On peut ainsi considérer le texte chiffré comme un homomorphisme du texte clair.

On parle de système de chiffrement homomorphe partiel lorsque les opérations que l’on peut effectuer sur les données chiffrées sont restreintes par rapport aux fonctions évaluables sur les données en clair. Ces fonctions peuvent être décomposées en séries d’additions et de multiplications.

Dans le cas du chiffrement homomorphe total (FHE), l’espace des fonctions évaluables est le même que celui des fonctions calculables. Il est donc possible d’effectuer tout type d’additions et de multiplications, ce qui permet de représenter toutes les fonctions calculables sous la forme d’un circuit. Un circuit est donc un enchaînement d’additions et de multiplications, équivalent à tout type de fonction évaluable dans l’ensemble considéré.

Il existe de nombreux schémas (appelés aussi cryptosystèmes) de chiffrement homomorphe total. Nous allons nous attarder sur la solution choisie par Zama, qui combine les résultats d’années de recherche en cryptologie.

Le chiffrement pleinement homomorphe made in Zama : TFHE-rs

Vous connaissez sûrement de nom le langage de programmation Rust, très utilisé par de nombreuses plateformes de smart contracts. Zama l’utilise également pour implémenter son schéma de chiffrement homomorphe complet.

TFHE-rs permet d’effectuer des opérations arithmétiques booléennes et entières sur des données chiffrées. Il inclut également deux API (interfaces de programmation d’application) côté serveur (en Rust et en C) et une API côté client, en WASM – WebAssembly.

Les systèmes de chiffrement développés par Zama reposent sur les techniques les plus avancées dans ce domaine de la cryptologie : le TFHE ou CGGI.

TFHE est l’abréviation de Fully Homomorphic Encryption over the Torus. Conçu en 2016, il est aussi connu sous le nom de CGGI pour Chillotti-Gama-Georgieva-Izabachène. Les chercheurs qui ont proposé ce schéma travaillent à l’université de Paris-Saclay, au laboratoire de mathématiques de Versailles, à l’entreprise Inpher de Lausanne et chez Gemalto, la filiale du groupe Thalès.

Pour le présenter simplement, le TFHE est un cryptosystème de chiffrement pleinement homomorphe rapide, peu coûteux en ressources, à la sécurité maximale.

Les différents types de ciphertexts

Les données chiffrées via un algorithme TFHE combinent trois schémas cryptographiques :

  • LWELearning With Errors : ce problème consiste à retrouver un secret s, étant donné un ensemble d’équations linéaires sur s.
  • RLWELearning With Errors over Rings : il s’agit de la généralisation du LWE, pour des anneaux de polynômes sur des champs finis. Les algorithmes de chiffrement de ce type ont notamment l’avantage d’êtres résistants aux attaques quantiques.
  • RGSWRing Gentry-Sahai-Waters : ce schéma de ciphertexte conçu par Craig Gentry, Amit Sahai, and Brent Waters utilise également les anneaux. Il est beaucoup moins coûteux en calcul que les premières versions des schémas FHE.

La notion algébrique d’anneau est centrale dans le chiffrement homomorphe. Un anneau est un ensemble équipé de deux opérations binaires – addition et multiplication. En outre, chacune doit satisfaire des propriétés précises :

  • Fermeture, associativité, commutativité, élément d’identité et inverse additif pour l’addition ;
  • Fermeture, associativité et distributivité pour la multiplication.

Ce sont ces caractéristiques qui permettent de construire des schémas homomorphes. On peut ainsi manipuler des entiers, des polynômes ou même des matrices. Dans le cas général, on parle de ciphertextes de type GLWEGeneral Learning With Errors – et GGSWGeneral Gentry-Sahai-Waters.

Les problèmes de réseau

La plupart des cryptosystèmes de chiffrement homomorphe complet reposent sur des problèmes de réseau (lattice problems). En mathématiques, un réseau est un ensemble de points. Plus précisément, il s’agit d’un ensemble discret, disposé dans un espace vectoriel réel de dimension finie.

Il existe différents types de problèmes de réseau, comme le SVP (problème du vecteur le plus court). Ces problèmes mathématiques sont conjecturés insolubles : leur difficulté est donc un atout précieux dans les systèmes de chiffrement.

Un réseau est un ensemble discret, disposé dans un espace vectoriel réel de dimension finie, de manière régulière – la différence de deux éléments du réseau est encore élément du réseau.

On utilise notamment les problèmes de réseau pour créer des algorithmes de chiffrement post-quantiques. Le schéma de chiffrement homomorphe total originel, proposé par Craig Gentry, repose sur ces problèmes. La version dure (hard lattice) des problèmes de réseau présente un très haut degré de sécurité – on parle de concrete security.

Le bruit

Lors du chiffrement, l’homomorphisme produit du bruit au sein des données chiffrées. Le bruit découle des paramètres aléatoires injectés au sein de l’algorithme de chiffrement. Pour être plus précis, on effectue le chiffrement des données grâce à une clé secrète, composée de polynômes aléatoires. Cette clé secrète est paramétrée en fonction du niveau de sécurité désiré. Lors de chaque chiffrement, elle est à nouveau générée aléatoirement.

Plus le nombre d’opérations homomorphes augmente, en particulier les multiplications, et plus le bruit augmente. Tant qu’il est au-dessous d’un certain niveau, les données peuvent être déchiffrées. S’il y a trop de bruit, les données sont « noyées » : il n’est alors plus possible de les déchiffrer.

Un cryptosystème pleinement homomorphe efficace doit donc permettre de conserver le bruit au sein des données chiffrées au dessous d’un plafond critique.

Pour être déchiffrable, l’opération homomorphe doit garder le bruit généré en dessous d’un certain seuil.

Il y a deux écoles. L’un des procédés qui permettent de réduire le bruit au sein des données chiffrées est appelé bootstrapping. Cette opération, conçue en 2009 par Gentry, permet de réduire le bruit généré par le schéma de chiffrement, et donc de construire des fonctions homomorphes de n’importe quelle taille et complexité. La seconde méthode vise à contrôler directement le bruit généré lors des opérations de chiffrement homomorphe.

Réduction du bruit : bootstrapping et schémas nivelés

Ces deux méthodes présentent différents temps de calcul, et consomment donc différentes quantités de ressources.

  • Fast bootstrapping : ces systèmes, comme le GSW, permettent de bootstrap les données chiffrées de façon rapide. À titre d’exemple, la durée d’une multiplication de deux ciphertexts avec les premiers systèmes était de 30 minutes. Avec les systèmes de dernière génération, le bootstrapping ne prend quelques dizaines de millisecondes.
  • Schémas nivelés (leveled schemes ou less noisy operations) : ces systèmes permettent de se passer du bootstrapping. On réduit le bruit généré par le chiffrement homomorphe en paramétrant les circuits représentant les fonctions mathématiques. On parle de « schéma nivelé » car on évalue préalablement la profondeur du circuit (en termes de multiplications successives). Ensuite, on adapte le schéma afin de réduire le bruit généré par les calculs.

On choisit l’une ou l’autre méthode en fonction de la complexité du cas d’usage. Les cas simples reposent généralement sur les leveled schemes, tandis que les cas complexes utiliseront le bootstrapping. Le système développé par Zama utilise une combinaison des deux.

Circuits booléens et arithmétiques

Les circuits d’exécution des fonctions utilisées pour le chiffrement homomorphe peuvent reposer sur deux types de logique.

Premièrement, les opérations d’addition et de multiplication peuvent être appliquées à des bits sous forme booléenne (AND/XOR). Deuxièmement, on peut représenter les entrées en plain text sous forme de variables entières. Le circuit arithmétique consiste alors en une série d’additions et de multiplications successives. On privilégie typiquement cette approche dans le cas des schémas nivelés.

L’approche de Zama

Zama utilise les meilleure techniques de bootstrapping connues à ce jour. De plus, leur cryptosystème permet d’utiliser des formats d’entrées non booléens (par exemple des entiers). La notion de bootstrapping programmable (PBS) renvoie à l’évaluation de fonctions univariées, parallèlement à la réduction du bruit. Il s’agit ainsi de la meilleure méthode d’évaluation de fonctions homomorphes non-linéaires. Le PBS permet également d’évaluer des fonctions à plusieurs variables – chaque fonction multivariée pouvant être exprimée comme une combinaison de fonctions univariées (théorème de superposition de Kolmogorov).

Ces méthodes nous amènent à la notion de circuit fonctionnel. Chaque schéma de calcul devient ainsi complètement homomorphe, en l’implémentant grâce à l’addition homomorphe et à la combinaison de fonctions univariées.

Zama - Circuit de fonctions univariées
Les circuits permettent de représenter toute fonction multivariée par une combinaison linéaire de fonctions univariées.

Le bootstrapping programmable

L’implémentation de Zama utilise le bootstrapping programmable pour évaluer les fonctions univariées, et le schéma nivelé pour l’évaluation des additions homomorphes.

Le bootstrapping est une opération très utile pour répondre au problèmes de bruit du chiffrement homomorphe, cependant, elle est très coûteuse en termes de mémoire et de quantité de calcul. Zama l’a donc améliorée le plus possible. Cette opération homomorphe complexe repose sur trois outils mathématiques :

  • Le modulus switching : changement du modulo d’un ciphertexte LWE ;
  • La rotation aveugle (blind rotation) : il s’agit de l’opération centrale du bootstrapping. Il s’agit, comme son nom l’indique, d’une rotation à l’aveugle des coefficients du polynôme, chiffré en tant que GLWE.
  • L’extraction d’échantillon (sample extraction) : cette opération prend le ciphertexte GLWE en entrée. Ensuite, il est chiffré comme un message polynômial. Enfin, on extrait l’un des coefficients chiffré du message en tant que chiphertexte LWE.

Tout ceci est relativement complexe, donc nous n’entrerons pas dans les détails mathématiques du bootstrapping. Ce qu’il faut retenir, c’est que cette opération permet de réduire et de contrôler le bruit généré par le chiffrement homomorphe, en-dessous d’un seuil acceptable. La fonction de déchiffrement est cruciale pour un bootstrapping efficace : en effet, c’est la seule opération permettant de se débarrasser de l’aléatoire, en particulier du bruit généré par les opérations homomorphes. Il faut donc aussi l’évaluer de façon homomorphe.

Encodage du ciphertext

Il faut encoder le texte chiffré, avant d’effectuer des opérations homomorphes sur ce dernier. L’encodage est tout simplement une façon de représenter un message au sein du ciphertexte. Comment nous l’avons vu précédemment, toutes les opérations homomorphes génèrent du bruit. Il existe différents types d’encodage, et son choix a de grandes conséquences sur l’exécution des opérations homomorphes. Il est donc primordial pour garantir l’efficacité d’un système de chiffrement homomorphe.

Dans le cas du TFHE de Zama, c’est l’encodage qui permet de réduire le bruit lors des opérations nivelées (additions ou multiplications par une constante). Les opérations homomorphes à exécuter influencent ainsi le choix de la méthode. Zama utilise différents encodages, en fonction de l’ensemble auquel appartiennent les nombres à traiter, par exemple :

  • Variables entières : encodage dans les MSB (most significant bits) ;
  • Nombres réels : l’encodage choisi permet d’évaluer des opérations nivelées approximatives (additions et multiplications par des constantes) jusqu’à une certaine précision.

On parle de TFHE (FHE over the torus) car on utilise un tore pour représenter les encodages. Cette structure mathématique prend la forme d’un donut : un tube courbé refermé sur lui-même. Plus précisément, il s’agit du quotient d’un espace vectoriel réel, de dimension finie, par un réseau, ou de tout espace topologique qui lui est homéomorphe.

Concrètement, le tore est une alternative à la représentation des encodages en bits :

Zama - TFHE - Encodage sur un tore
Visualisation sur un tore et en binaire de l’encodage d’un message m

Construction des opérations homomorphes

Chaque opération homomorphe nécessite donc de choisir un encodage adapté. Il permet alors de contrôler le bruit généré lors des calculs. Il faut aussi veiller à décomposer les expressions algébriques de grande taille, comme les polynômes. Lors de la multiplication homomorphe de deux ciphertextes, Zama utilise un procédé appelé commutation de clé (key switching). Cela consiste à échanger une clé secrète par une autre.

Les différentes opérations homomorphes réalisées lors du chiffrement sont les suivantes :

  • Multiplication par de grandes constantes ;
  • Multiplication par de grands polynômes ;
  • Commutation de clé ;
  • Produit externe (multiplication homomorphe deux textes chiffrés, telle que le résultat soit un chiffrement du produit des messages) ;
  • Produit interne (une liste de produits externes indépendants entre l’un des textes chiffrés GGSW en entrée, et tous les textes chiffrés GLWE composant la deuxième entrée GGSW) ;
  • CMux – la version homomorphe d’un multiplexeur, une porte logique comportant trois entrées, deux sorties et un sélecteur.

Les avantages du TFHE de Zama

Comme nous venons de le voir, Zama combine de nombreuses techniques de pointe et d’outils cryptographiques avancés pour proposer son schéma de TFHE. Il est ainsi optimisé pour être peu coûteux en calculs, tout en restant extrêmement sécurisé. En premier lieu, les outils open source phares de Zama sont l’implémentation du schéma en Rust (TFHE-rs) et le compilateur (Concrete).

Cependant, comme nous allons le voir, Zama propose d’autres outils, pavant la voie à de nombreux cas d’usages dans des secteurs variés.

Les cas d’usage de la suite logicielle de Zama

Le terme de révolution cryptographique, lorsqu’on parle de chiffrement homomorphe total, n’est pas exagéré ! En effet, le TFHE permet d’améliorer et de créer de nouvelles applications dans des domaines très variés.

Les réseaux neuronaux

En intelligence artificielle, un réseau de neurones est un système permettant d’exécuter des fonctions logiques, arithmétiques et symboliques complexes, en reprenant le paradigme des neurones biologiques. Les applications des réseaux neuronaux sont multiples, par exemple :

  • La classification et l’analyse statistique ;
  • L’approximation de fonctions inconnues ;
  • La modélisation de systèmes chaotiques.

Les réseaux de neurones sont constitués de différentes couches, dont les entrées sont prises sur les sorties de la précédente, à la manière des synapses de notre cerveau. Les plus complexes peuvent également contenir des boucles, qui permettent d’obtenir tous types de comportements. Pour chaque connexion, une fonction de combinaison détermine les valeurs de sortie.

Les réseaux de neurones peuvent donc être vus comme des circuits fonctionnels. Ils nécessitent une fonction d’activation (aussi appelée fonction de seuillage) afin que les neurones aient un fonctionnement non-linéaire. Le calcul homomorphe d’une fonction d’activation est extrêmement complexe. Grâce au bootstrapping programmable, il est désormais possible de réaliser ces évaluations de manière beaucoup plus rapide, profonde et précise. Les outils développés par Zama, dédiés au machine learning, permettent ainsi d’améliorer l’efficacité des calculs d’un ordre de grandeur de 100 à 1000 !

Les smart contracts confidentiels sur Ethereum

Nous allons particulièrement nous focaliser sur ce cas d’usage, car il nous concerne directement, en tant que cryptonautes chevronnés ! Si vous connaissez le fonctionnement d’Ethereum et de sa machine virtuelle, vous n’êtes pas sans connaître le caractère public des smart contracts déployés sur sa blockchain, qui présente plusieurs inconvénients. Par exemple, une entreprise peut n’avoir aucun intérêt à ce que ses données financières ou les paramètres de ses applications soient accessibles en quelques clics de souris. Le caractère public de la blockchain présente aussi des risques de sécurité :

  • Les voleurs peuvent connaître le solde et l’état de tel ou tel wallet ;
  • Cela facilite la surveillance des pirates, gouvernements ou autres agences ;
  • Dans le domaine de la finance décentralisée, les nombreux robots ont un avantage sur les humains (le fameux front-running).

Zama permet de créer des smart contracts confidentiels grâce au chiffrement homomorphe. Le FHE garantit la confidentialité de toutes les données de transaction. De même, l’état des contrats reste aussi confidentiel, et ce même lors des opérations de calcul. Même les mineurs ne peuvent y avoir accès. La fhEVM assure le chiffrement de bout en bout des données on-chain, et ce quels que soit les calculs réalisés sur ces dernières.

Le protocole fhEVM de Zama

La version alpha de la fhEVM de Zama est disponible sur GitHub. Cette machine virtuelle pour Ethereum permet d’effectuer des opérations sur des données chiffrées ou non-chiffrées, de la même façon que l’EVM classique. Ainsi, les développeurs peuvent utiliser tous leurs outils préférés. Son utilisation n’a aucun impact sur les applications décentralisées existantes. Tous les calculs sont effectués on-chain, qu’il s’agisse d’opérations classiques ou FHE.

Les fonctionnalités principales de la fhEVM de Zama sont les suivantes :

  • Intégration du langage Solidity ;
  • Confidentialité programmable : les développeurs peuvent définir la logique du contrôle d’accès aux états chiffrés au sein de leurs contrats ;
  • Haute précision pour les variables entières (256 bits) ;
  • Tous les opérandes classiques sont disponibles ;
  • Génération de nombres aléatoires on-chain, sans le besoin de recourir à un oracle ;
  • Systèmes de déchiffrement configurables ;
  • Opérations FHE consécutives illimitées.

Le créateur du contrat chiffre les entrées des transactions et les états grâce à une clé de réseau globale. Pour s’assurer que personne ne peut déchiffrer un état sans avoir préalablement atteint un consensus, il faut la partager entre les validateurs. Ainsi, seul le développeur d’un smart contract confidentiel peut décider sous quelles conditions révéler l’état du contrat.

Zama - fhEVM - Confidentialité
Les ZKP permettent d’améliorer la scalabilité d’Ethereum, le chiffrement homomorphe sa confidentialité.

Les cas d’usage de la fhEVM de Zama

Le chiffrement homomorphe étend les possibilités offertes par les smart contracts d’Ethereum :

  • Tokénisation : échange de jetons on-chain sans dévoiler les montants engagés ;
  • Enchères aveugles : organisation d’enchères sans avoir à dévoiler leur montant ou le gagnant ;
  • Gaming : possibilité de cacher des mouvements, des cartes, des objets pour les jeux on-chain ;
  • Vote confidentiel ;
  • Systèmes d’identité on-chain confidentiels (sans avoir à recourir à des preuves de type ZK) ;
  • Transferts de fonds confidentiels, sans avoir à passer par des services de mixage.

On peut bien sûr imaginer de nombreuses autres applications basées sur ces smart contracts confidentiels.

Les systèmes d’authentification on-chain

La fhEVM de Zama permet notamment de développer des systèmes d’authentification on-chain confidentiels. Ces derniers peuvent tout à fait être adaptés pour répondre aux exigences d’entités telles des gouvernement ou des banques, en matière de conformité.

On parle ainsi d’identifiant décentralisé (DID ou Decentralized Identifier) : il s’agit d’un identifiant unique, émis par un gouvernement, une entreprise ou l’utilisateur lui-même. Une clé privée correspond à chaque DID, ce qui permet de prouver sa propriété. Les DID peuvent contenir tous types d’informations et d’attributs : âge, nationalité, score de crédit, etc.

La plupart des DID actuels reposent sur des preuves à divulgation nulle de connaissance (ZKP) et sont implémentés côté client. Cependant, cela pose des inconvénients dans certains cas :

  • Utilisateurs multiples ;
  • Règles complexes ;
  • Maintien de règles communes.

L’utilisation d’un registre – sur blockchain – pourrait simplifier ces processus; cependant, son caractère public ruine les exigences en termes de confidentialité. Tous les utilisateurs pourraient ainsi connaître l’identité de leurs pairs.

Le chiffrement homomorphe prend alors tout son sens. Grâce à la fhEVM, les DID sont chiffrés et stockés on-chain : les applications peuvent alors vérifier la conformité d’un DID simplement en appelant un smart contract.

Fonctionnement des DID basés sur la fhEVM

Ce système d’identification décentralisée, dans sa forme basique, repose sur trois contrats :

  • Abstraction de l’identité : un contrat de registre stocke les identifiants chiffrés et les attestations correspondantes. Il peut être géré par une entité centralisée, par exemple une société de KYC comme Onfido.
  • Un contrat de régulation encode l’ensemble des règles permettant aux utilisateurs d’échanger des jetons, en fonction de leurs DID. Concrètement, la régulation s’effectue au niveau du contrat et non de l’utilisateur.
  • Les transferts sont conformes aux règles et confidentiels. Un contrat ERC20 utilise le contrat de régulation pour assurer la conformité des transferts d’ERC20 : cela ne change rien à l’API ERC20 de l’application elle-même.
Zama - Protocole DID on-chain confidentiel
Le protocole d’identification décentralisée confidentielle de Zama.

En d’autres termes, le protocole proposé par Zama permet d’assurer à la fois conformité et préservation de la vie privée. Confidentialité et conformité peuvent coexister grâce au chiffrement homomorphe.

Challenges techniques et performances

Les trois défis à relever pour concevoir cette fhEVM sont les suivants :

  • Le contrôle d’accès : comment déchiffrer les états de façon sélective, sans passer par une clé centralisée ?
  • La composabilité : comment assurer la composabilité des contrats sans compromettre leur confidentialité ?
  • Les performances de la fhEVM : comment augmenter son débit (en transactions par seconde) sans augmenter la taille des blocs ?

Pour le moment, la fhEVM permet de traiter 5 transactions par seconde. Cependant, à l’avenir, en utilisant des puces spécialisées pour le FHE, il sera possible de dépasser les 1000 tx/s, et ce, pour une fraction du coût actuel.

Il est déjà possible de créer des rollups FHE optimistes, et des rollups FHE basés sur les ZKP devraient voir le jour d’ici trois années.

Le traitement de données médicales et la médecine prédictive

Ce cas d’usage typique repose sur l’outil Concrete-ML développé par Zama. Il s’agit d’un outil de machine learning open source assurant la confidentialité des données. Le fonctionnement de l’application est le suivant :

  • Le patient sélectionne ses symptômes, puis l’application chiffre ces données côté client, grâce à une clé privée ;
  • Côté serveur, l’outil de machine learning travaille sur les données chiffrées. Le patient reçoit alors le résultat de l’analyse, également chiffré. De la sorte, il est impossible d’avoir accès aux symptômes présentés côté serveur. Afin d’effectuer des opérations homomorphes sur les données chiffrées, le serveur a également besoin d’une clé d’évaluation, publique, générée côté client.
  • Grâce à sa clé privée, le patient peut déchiffrer les résultats côté client.
Zama - Concrete ML - Médecine prédictive grâce au machine learning et au chiffrement homomorphe

Cette application, conçue à des fins de démonstration, est accessible ici. Il s’agit d’une belle illustration des possibilités offertes par Concrete-ML. Ainsi, grâce au chiffrement pleinement homomorphe, les data scientists peuvent, sans connaissances en cryptographie, effectuer diverses opérations :

  • Conversion de modèles automatique : on peut convertir les modèles de machine learning (linéaires, arbres, réseaux de neurones) dans leur équivalent homomorphe ;
  • Entraînement des modèles directement sur des données chiffrées, en préservant leur confidentialité ;
  • Pré-traitement de données chiffrées.

L’outil de machine learning FHE de Zama est en cours de développement. Il présente donc des limitations. Les modèles doivent être au-dessous d’une certaine limite de précision. Quant à l’entraînement, Concrete-ML ne supporte pour l’instant qu’une quantité limitée de modèles.

Autres cas d’usage des outils de Zama

Les applications citées précédemment ne sont qu’un éventail des possibilités offertes par la suite logicielle développée par Zama. De nombreux cas d’usages reposant sur le chiffrement homomorphe total feront leur apparition.

Dans la finance, le FHE permet d’analyser des données client, d’améliorer la gestion du risque et la détection des fraudes, tout en préservant le caractère confidentiel de ces dernières.

Quant à la publicité, l’analyse de données utilisateur chiffrées permet d’améliorer le ciblage des publicités tout en restant respectueux de la vie privée.

Le FHE permet également construire des systèmes d’authentification biométrique, sans qu’une tierce partie ne puisse accéder à l’identité de leurs utilisateurs.

Le chiffrement homomorphe est un allié puissant lorsqu’il s’agit de collaboration sécurisée et confidentielle autour de données sensibles. En effet, on peut l’utiliser pour effectuer de l’analyse sur des données partagées mais chiffrées, qui restent donc secrètes ! Par exemple, dans le domaine de la défense, différentes agences pourront échanger de manière collaborative leurs données, pour une meilleure efficacité, sans pour autant révéler d’information. Il en va de même pour la recherche scientifique.

En ce qui concerne l’intelligence artificielle, il sera possible d’utiliser des LLM (grands modèles de langage) comme ChatGPT, tout en préservant la confidentialité des données utilisateur.

Le compilateur de Zama : Concrete

Concrete est le compilateur open source de Zama. Il est modulaire, et permet d’intégrer les futures innovations, comme l’utilisation de puces spécialisées (ASIC et FPGA). Le rôle du compilateur est de faciliter le travail des développeurs souhaitant utiliser le chiffrement homomorphe :

  • Gestion du bruit ;
  • Choix des paramètres de chiffrement ;
  • Sélection des opérations et de leur ordre.

Ces problématiques sont typiquement l’apanage des cryptographes. Cependant, avec Concrete, il n’y a pas besoin de connaissances spéciales dans le domaine pour utiliser le TFHE. L’équipe de Zama a travaillé deux ans à fournir la première version de leur compilateur, user-friendly et open source. Son architecture modulaire permet de remplacer facilement des composants individuels, ou d’ajouter des extensions.

Il existe plusieurs API pour le compilateur, la plus facile à manipuler étant l’API Python. Il existe également une interface en lignes de commande, pratique pour le débogage.

Le compilateur utilise un format d’entrée nommé MLIRMulti-Level Intermediate Representation. Il s’agit d’un langage intermédiaire, une structure de données représentant le programme à l’intérieur du compilateur. Ainsi, tout développeur peut construite son propre front-end pour le compilateur Concrete, s’il est capable d’écrire le MLIR correspondant à ses circuits. Pour l’instant, le seul front-end disponible est Concrete Python, mais on peut en concevoir pour n’importe quel langage.

Conclusion

Si vous avez réussi à aller au bout de cet article, le concept de chiffrement homomorphe vous est désormais familier. Vous reconnaîtrez qu’il s’agit d’une véritable prouesse cryptographique ! Zama s’appuie sur des décennies de recherche en cryptologie, ayant monopolisé le cerveau des plus brillants mathématiciens durant des années.

Le chiffrement pleinement homomorphe (TFHE) permet donc tout simplement de traiter des données chiffrées sans avoir à les déchiffrer. Ses applications sont multiples et révolutionneront les protocoles de demain. Espérons que les gouvernements, les banques et les autorités de régulation sauront en tirer parti, afin d’allier conformité et confidentialité ! Quoiqu’il en soit, ses avantages dans les domaines de l’authentification, de l’analyse de données et de l’intelligence artificielle sont d’ores et déjà exploitables.

Zama s’inscrit comme l’un des leaders de cette révolution cryptographique. Pour aller plus loin, n’hésitez pas à parcourir la documentation fournie par l’entreprise. Les plus férus de mathématiques peuvent lire les articles de blog, entrant dans les détails des concepts et des outils cryptographiques composant leur suite logicielle. De même, les papiers de recherche cités en fin d’article vous permettront de retracer l’histoire du chiffrement homomorphe et comprendre le fonctionnement des différents algorithmes.

Ressources

Morgan Phuc

Cofounder @ 8Decimals & Partner @ Node Guardians - Making crypto great again - Journal du Coin / BitConseil