Cryptosystème de Cramer-Shoup

Cryptosystème prouvé IND-CCA2 dans le modèle standard sous l'hypothèse DDH

En cryptologie, le cryptosystème de Cramer-Shoup est un chiffrement à clé publique introduit en 1998 par les cryptologues Ronald Cramer et Victor Shoup[1],[2],[3]. Historiquement, il s'agit du premier cryptosystème combinant les trois propriétés suivantes : il est résistant aux attaques adaptatives à chiffrés choisis (IND-CCA2), il est prouvé sûr dans le modèle standard, et il est efficace[1],[3]. Ces propriétés et d'autres le rendent particulièrement attrayant pour construire des mécanismes d'encapsulation de clés[4],[5].

Histoire et motivation modifier

La résistance aux attaques adaptatives à chiffrés choisis (IND-CCA2), introduite par Rackoff et Simon en 1991[6], correspond au plus haut niveau de sécurité atteignable par un cryptosystème pour le chiffrement[7]. La nécessité pratique d'une telle sécurité a été mise en avant par Bleichenbacher en 1998[8].

Plusieurs constructions IND-CCA2 ont été proposées dans le modèle de l'oracle aléatoire, notamment OAEP. Par ailleurs, des transformations génériques permettent d'atteindre ce niveau de sécurité, mais ils reposent sur des preuves à divulgation nulle de connaissance et s'avèrent très inefficaces. Jusqu'à l'introduction du cryptosystème de Cramer-Shoup, aucun chiffrement IND-CCA2 efficace n'était connu, dont la sécurité pouvait être prouvée dans le modèle standard[3]. La première preuve que de tels cryptosystèmes existent pourtant est due à Dolev, Dwork et Naor[9].

Le cryptosystème de Cramer-Shoup est une extension de celui d'ElGamal qui bloque la malléabilité du chiffré. Le prix à payer est que les clés et les chiffrés sont beaucoup plus larges que pour ElGamal (4 éléments de groupe pour le chiffré). De nombreuses variantes de Cramer-Shoup proposées depuis cherchent à réduire ce phénomène, quitte à réintroduire des hypothèses hors du modèle standard[10].

Description du cryptosystème modifier

Le cryptosystème de Cramer-Shoup repose sur trois algorithmes   décrits ici[1],[note 1],[11].

Génération de clé modifier

L'algorithme de « génération de clé »   prend en entrée un paramètre de sécurité  . Il détermine un groupe cyclique   d'ordre   et une fonction  . Le choix de   et de la fonction   dépend de   et se fait à partir de l'analyse de sécurité, voir plus bas.

L'algorithme donne deux générateurs aléatoires   de   et tire six exposants aléatoires  . Il calcule alors :

 

Finalement l'algorithme retourne une clé publique  , des paramètres publics  , et la clé privée  .

Chiffrement modifier

L'algorithme de chiffrement   prend en entrée les paramètres publics, la clé publique, et un message  . Un exposant   est choisi uniformément au hasard, puis l'algorithme calcule :

 

Le chiffré correspondant est  .

Déchiffrement modifier

L'algorithme de déchiffrement   prend en entrée les paramètres publics, la clé privée, et un chiffré  . Il calcule   et vérifie  . Si l'égalité est fausse, l'algorithme de déchiffrement échoue et renvoie un symbole d'erreur ( ). Sinon, il renvoie  .

Sécurité modifier

Le cryptosystème de Cramer-Shoup est résistant aux attaques adaptatives à chiffrés choisis (IND-CCA2) lorsque la fonction   est choisie dans une famille de fonctions de hachage universelles à sens unique[12],[note 2] par réduction, dans le modèle standard, à la difficulté du problème décisionnel de Diffie-Hellman dans  [1],[note 3].

Notes et références modifier

Notes modifier

  1. Il existe plusieurs présentations équivalentes, et plusieurs variantes non équivalentes, du cryptosystème. Pour des alternatives (simplifiées ou étendues) voir Boneh et Shoup 2017, chap 12.5.
  2. Une fonction de hachage résistante aux collisions est a fortiori universelle à sens unique et peut donc être utilisée pour instancier ce cryptosystème.
  3. La preuve originelle de Cramer et Shoup opère par réduction directe d'un adversaire CCA2 au problème DDH. Une preuve alternative consiste à montrer la sécurité sémantique et la simulabilité[4], qui ensemble impliquent IND-CCA2[7].

Références modifier

Annexes modifier

Bibliographie modifier