Cryptosystème homomorphe de Naccache-Stern

De testwiki
Aller à la navigation Aller à la recherche

Modèle:Ne pas confondre

En cryptologie, le cryptosystème homomorphe de Naccache-Stern est un chiffrement à clé publique introduit en 1998 par les cryptologues David Naccache et Jacques Stern[1]. La sécurité sémantique de ce cryptosystème repose sur le problème de la résiduosité supérieure[2], et il s'agit d'un système de chiffrement additivement homomorphe.

D'un point de vue historique, le cryptosystème de Naccache-Stern est une amélioration du cryptosystème de Benaloh-Fischer[3], lui-même une extension de celui de Goldwasser-Micali[4], dans une succession d'améliorations de bande passante de chiffrements homomorphes.

Description

Le cryptosystème s'appuie sur trois algorithmes (G,E,D) correspondant respectivement à la génération de clés, au chiffrement, et au déchiffrement.

Génération de clés

L'algorithme de génération de clé prend en entrée un paramètre de sécurité 1λ et retourne un couple de clés obtenues de la manière suivante[Note 1]Modèle:,[5] :

  • Deux ensembles de nombres premiers[Note 2] p1,,pk et q1,,qk sont choisis, tous distincts. Le nombre k est déterminé par l'algorithme en fonction de λ, et les premiers sont choisis « petits », en un sens précisé plus tard.
  • Le produit des pi (resp. des qi) est calculé et noté u (resp. v)
  • Deux grands premiers a,b sont alors choisis de sorte que p=2au+1 et q=2bv+1 soient simultanément premiers.
  • Le produit n=pq et calculé, et un élément g/n d'ordre φ(n)/4 est choisi, où φ est la fonction d'Euler[Note 3].

La clé publique est alors définie comme 𝗉𝗄={g,n,σ=uv} et la clé privée correspondante est donnée par 𝗌𝗄=p (ou q, ce qui est équivalent).

Les nombreux tests de primalité intervenant lors de la génération de clés sont relativement coûteux, mais peuvent être en partie absorbés par une implémentation appropriée[1].

Chiffrement

L'algorithme de chiffrement prend en entrée un message m/σ et la clé publique 𝗉𝗄. Un élément aléatoire x/n est choisi[Note 4], puis le chiffré est obtenu en calculant E(m)=xσgmmodn.

Déchiffrement

L'algorithme de déchiffrement prend en entrée un chiffré c/n et la clé privée 𝗌𝗄. On calcule alors pour chaque i,j=1,,kci=cφ(n)/pimodncj=cφ(n)/qjmodnOn peut écrire ces équations en prenant pour base le générateur g, à savoirci=guimodncj=gvjmodnPour un message chiffré, on a ui=miφ(n)/pi (resp. vj=mjφ(n)/qj) où mi=mmodpi (resp. mj=mmodpj). En résolvant un logarithme discret modulo non obtient alors mi,mj ce qui permet via le théorème chinois des restes de retrouver m. Résoudre le logarithme discret est en général considéré difficile : c'est pourquoi les premiers pi,qj ont été choisis petits, au sens qu'une recherche exhaustive de mi,mj est possible.

Homomorphisme additif

Le cryptosystème de Naccache-Stern jouit d'une propriété supplémentaire : il s'agit d'un chiffrement additivement homomorphe. En effet, on a pour tous messages m1,m2/σ,E(m1)=x1σgm1modnE(m2)=x2σgm2modnde sorte queE(m1)E(m2)=x1σgm1x2σgm2modn=(x1x2)σgm1+m2modnqui se déchiffre en m1+m2. Contrairement au cryptosystème de Paillier, également additivement homomorphe, l'intérêt de la construction de Naccache-Stern est sa bande passante : on travaille modulo n et non pas modulo n2 comme Paillier.

Sécurité

Le cryptosystème de Naccache-Stern est sémantiquement sûr (IND-CPA) sous l'hypothèse de la difficulté du problème de la résiduosité supérieure[2]. En réalité on peut montrer qu'il repose sur une hypothèse légèrement moins forte de résiduosité des premiers choisis[4]. Dans un cas comme dans l'autre, la meilleure approche connue (en 2018) pour résoudre ces problèmes est d'obtenir une factorisation de n. Les meilleurs algorithmes classiques connus (i.e., GNFS et ses variantes) permettent alors de fixer les paramètres pour viser un niveau de sécurité donné.

En revanche, s'agissant d'un chiffrement homomorphe, ce cryptosystème est malléable et ne peut donc pas prétendre aux notions plus fortes de sécurité (IND-CCA notamment).

De plus, on connait pour le problème de la factorisation un algorithme quantique efficace : l'algorithme de Shor. Le cryptosystème de Naccache-Stern n'est donc pas un candidat post-quantique.

Notes et références

Notes

  1. Nous suivons ici pour l'essentiel la description de la « version probabiliste » décrite dans (Naccache et Stern 1998), qui est le cas général et qui est la seule capable de sécurité sémantique.
  2. (Naccache et Stern 1998) observent qu'il n'est pas nécessaire que les nombres soient premiers : il suffit qu'ils soient premiers entre eux. Le choix de nombres premiers a le mérite de faciliter l'analyse.
  3. Lorsque les pi,qi sont les 2k plus petits nombres premiers, le théorème des nombres premiers permet d'estimer la probabilité qu'un élément g pris au hasard convienne à environ 1/ln2k.
  4. Si le nombre x est fixé, ce qui correspond à la « version déterministe » de (Naccache et Stern 1998), on n'a plus de sécurité sémantique : le cryptosystème est mieux décrit comme une fonction à trappe.

Références

Modèle:Portail