URL: https://linuxfr.org/news/le-chiffrement-homomorphe Title: Le chiffrement homomorphe Authors: Ely Sclarckone, claudex, Xavier Teyssier, jcr83, Nÿco, palm123 et Benoît Sibaud Date: 2014年01月13日T14:59:27+01:00 License: CC By-SA Tags: cryptographie et vote_électronique Score: 52 Voici un bref état des lieux d'un domaine encore expérimental de la cryptographie : le chiffrement homomorphe. Un schéma de chiffrement homomorphe permet d'effectuer des opérations sur des données chiffrées sans jamais avoir à déchiffrer ces dernières. NdM : merci à Elyotna pour son journal. ---- [Journal à l'origine de la dépêche](http://linuxfr.org/users/elyotna/journaux/le-chiffrement-homomorphe) [Le chiffrement Homomorphe](https://en.wikipedia.org/wiki/Homomorphic_encryption) [L'implémentation actuelle du cryptosystème de Gentry](https://github.com/shaih/HElib) [La cryptographie à base de réseaux euclidiens](https://en.wikipedia.org/wiki/Lattice-based_cryptography) ---- # Piqûre de rappel # Il est ici question de [cryptosystème asymétrique](https://fr.wikipedia.org/wiki/Cryptographie_asym%C3%A9trique). Chaque interlocuteur au sein d'un de ces cryptosystème possède deux clés : * Une clé publique, qu'il peut distribuer librement, sans risque. Les autres interlocuteurs du réseau peuvent, grâce à cette clé : * Chiffrer des messages à destination de l'interlocuteur original * Une clé privée, qu'il doit conserver jalousement. Il peut : * Déchiffrer les messages que les autres interlocuteurs lui ont envoyés avec sa clé publique Le cryptosystème asymétrique le plus connu est très probablement [RSA](https://fr.wikipedia.org/wiki/Rivest_Shamir_Adleman), même s'il va être amené à disparaître dans les années à venir pour être remplacé par des cryptosystèmes basés sur les courbes elliptiques (ECDSA / ECDHE). # Le chiffrement homomorphe, c'est quoi ? # C'est une particularité qui peut s'appliquer à certains cryptosystèmes asymétriques, et qui permet à un tiers qui possède votre clé publique d'effectuer des calculs arbitraires (addition et/ou multiplication) sur des messages préalablement chiffrés. Il obtient en résultat de ces calculs de nouveaux messages, qui sont les résultats chiffrés des opérations. Puisque je me suis probablement mal exprimé, voici un exemple pour illustrer tout ça : Mettons qu'Alice possède deux nombres, 5 et 6. Elle aimerait connaître leur produit, mais ne possède pas la puissance de calcul nécessaire. Elle pourrait donner ces deux nombres à un supercalculateur, mais voilà : ce sont des informations capitales qui peuvent lui coûter beaucoup d'argent si un attaquant met la main dessus. La solution : le chiffrement homomorphe. Alice chiffre 5 et 6 avec sa clé publique, ce qui donne (par exemple) 48657 et 1248652. Elle transmet ces deux nombres ainsi que sa clé publique à un datacenter. Ce dernier calcule le produit homomorphe de 48657 et 1248652, ce qui donne 84357. Il transmet 84357 à Alice, qui le déchiffre avec sa clé privée : 30 ! Dans ce cas, on voit bien que le datacenter a réalisé une opération sur deux nombres qui n'avaient pour lui **aucune signification**, a produit un résultat dont il n'a **rien pu faire**, mais pourtant cela sert bien notre pauvre Alice :) . # Quels usages ? # À part dans l'exemple ci-dessus où j'ai montré que le chiffrement homomorphe pouvait être utile pour déléguer des traitements complexes à des datacenters à qui l'on ne fait pas confiance, le chiffrement homomorphe peut également servir dans le cas du vote électronique. En effet, chaque vote peut être chiffré séparément, la somme des votes est calculée de façon homomorphe sur les votes chiffrés, et quelques autorités de confiance qui se partagent la clé privée se réunissent une unique fois pour déchiffrer la somme obtenue. Bien entendu, beaucoup d'autres vérifications sont utilisées pour prouver la validité des votes et le chiffrement homomorphe ne constitue qu'une partie du protocole de vote électronique. # Où en est-on maintenant ? # Le problème avec les cryptosystèmes asymétriques actuels (RSA, ElGamal, etc.), c'est qu'ils ne sont que _partiellement_ homomorphes. En d'autres termes, ils ne supportent qu'une seule opération : addition ou bien multiplication. Or, il y a ce bon vieux théorème en informatique qui dit que si l'on veut pouvoir faire tout type de calcul, il faut pouvoir faire les deux. C'est alors qu'intervient en 2009 Craig Gentry, de l'université de Stanford. Sa thèse est la toute première représentation théorique d'un cryptosystème complètement homomorphe, fondé sur la cryptographie à base de réseaux euclidiens (exit donc le problème de factorisation des nombres avec RSA ou encore le logarithme discret avec ElGamal[[http://fr.wikipedia.org/wiki/Cryptosyst%C3%A8me_de_ElGamal]]). En plus, la cryptographie à base de réseaux euclidiens a la particularité d'être résistante aux ordinateurs quantiques. Formidable non ? Oui mais voilà, dans la pratique, cela donne des clés gigantesques (plusieurs méga-octets, alors qu'une clé RSA ne pèse qu'entre 128 et 512 octets), et les calculs (addition et multiplications) peuvent être jusqu'à 1000x plus lents que les opérations non-homomorphes. Depuis sa première publication, Gentry et des chercheurs du monde entier cherchent alors à améliorer l'efficacité du cryptosystème, et font de bonnes avancées chaque année => Optimisation des temps de calcul et réduction de la taille des clés. On reste encore loin d'une solution efficace malgré tout. Le chiffrement homomorphe est l'un des sujets bouillants de la cryptographie moderne, et on espère qu'il sera possible d'ici quelques années de l'utiliser en pratique.