Fonction à trappe

En cryptologie, une fonction à trappe ou TDF (pour l'anglais trapdoor function) est un modèle idéalisé permettant de raisonner à propos de systèmes cryptographiques. En première approche, il s'agit d'une fonction qu'il est facile d'évaluer en chaque point de son domaine, mais qu'il est difficile d'inverser à moins de disposer d'une information particulière, appelée « trappe »[Note 1].
Histoire
La notion de fonction à trappe a été introduite par les cryptologues américains Whitfield Diffie et Martin Hellman en 1979[1], comme une manière de résoudre le problème de la cryptographie à clé publique tel que posé par Ralph Merkle quelques années plus tôt[2]Modèle:,[Note 2]. Étant donné une fonction à trappe, il est en effet immédiat de construire un algorithme de chiffrement ou de signature numérique. Cependant Diffie et Hellman ne proposent pas de telle fonction dans leur article[1].
La question de l'existence de fonctions à trappes a été difficile, le premier exemple pratique étant dû à Rivest, Shamir et Adleman en 1976[3]Modèle:,[Note 3]Modèle:,[4] et reposant sur le problème RSA. C'est en partie pour ces travaux que les trois reçoivent en 2002 le prestigieux prix Turing. En 1979 Michael Rabin a proposé de montrer comment construire une fonction à trappe reposant sur le problème de la factorisation[5]. Dans les deux cas, RSA et Rabin, la trappe est donnée par un facteur d'un grand nombre composé.
Dans les années qui suivirent, les progrès en cryptologie (dus notamment à Lamport, Goldwasser-Micali-Rivest, Goldreich-Goldwasser-Micali, Goldreich, Naor-Yung, Rompel[6] et d'autres) ont montré comment construire des algorithmes de signature simplement à partir de fonctions à sens unique, relativisant grandement l'intérêt des fonctions à trappes[6]Modèle:,[7]. Ainsi par exemple, les signatures ECDSA reposent sur le problème du logarithme discret, pour lequel aucune trappe n'est connue. Construire génériquement un chiffrement à clé publique à partir de fonctions à sens unique uniquement est interdit par un résultat de séparation dû à Impagliazzo et Rudich[8], et on ignore (en 2018) si combiner les fonctions à sens unique et les permutations pseudo-aléatoires suffit[7]. Cela dit, il existe des constructions ad hoc telles que le chiffrement d'ElGamal ou de Cramer-Shoup reposant sur le logarithme discret[Note 4].
Comme mentionné plus haut, une fonction à trappe donne immédiatement un schéma de chiffrement à clé publique. Cependant il n'est pas possible de construire génériquement une fonction à trappe à partir d'un chiffrement à clé publique[9], les deux notions étant séparées en boîte noire.
Un regain d'intérêt pour les fonctions à trappe est apparu avec le développement de la cryptographie à base de réseaux[10]Modèle:,[11]Modèle:,[12]Modèle:,[13] où la trappe est généralement donnée par une « bonne base » d'un réseau euclidien.
Définition
Une collection de fonctions à trappe est la donnée d'un ensemble de fonctions satisfaisant les trois propriétés suivantes[7] :
- Il existe un algorithme efficace[Note 5] de « génération » qui prend en entrée un paramètre de sécurité en représentation unaire et produit une paire[Note 6] de fonctions de ;
- Il existe un algorithme efficace d'« échantillonnage » , c'est-à-dire un algorithme qui prend en entrée et retourne un élément aléatoire de , distribué de façon uniforme[Note 7] ;
- La fonction obtenue en sortie de est à sens unique, c'est-à-dire que pour tout adversaire efficace il existe une fonction négligeable telle que
Une définition moins générale mais plus proche des constructions consiste à supposer que toutes les fonctions ont même domaine, i.e. et que ce domaine est représentable i.e. [14].
On peut également demander que les fonctions de soient des permutations (auquel cas ), et on parle alors de « permutations à trappe ». À l'heure actuelle (2018) la seule construction connue susceptible de donner une permutation à trappe repose sur le problème RSA ou une variante mineure de celui-ci[14].
Notes et références
Notes
- ↑ Pour que la notion ne soit pas creuse, il faut bien entendu que la trappe ne soit pas elle même facile à calculer à partir d'une représentation de la fonction.
- ↑ Les puzzles de Merkle sont un premier pas dans cette direction, mais la difficulté d'inverser le problème reste quadratique (i.e. polynomiale) alors qu'une fonction à trappe exige un avantage négligeable (i.e. exponentiel).
- ↑ Voir aussi Ron Rivest, The early days of RSA.
- ↑ Nécessairement, ces constructions utilisent davantage que le sens unique de l'exponentiation modulaire.
- ↑ Généralement, une machine de Turing probabiliste.
- ↑ Précisément : il s'agit d'une paire de chaînes de caractères, de taille au plus polynomiale en , décrivant les fonctions et .
- ↑ C'est-à-dire que l'avantage d'un adversaire à distinguer la distribution effective des éléments ainsi obtenu d'une distribution uniforme est négligeable.
Références
- ↑ 1,0 et 1,1 Modèle:Article
- ↑ Modèle:En Ralph Merkle, "Secure Communication Over Insecure Channels", 1975
- ↑ Modèle:Article
- ↑ Modèle:Ouvrage
- ↑ Modèle:Article
- ↑ 6,0 et 6,1 Modèle:Article
- ↑ 7,0 7,1 et 7,2 Modèle:Ouvrage
- ↑ Modèle:Article
- ↑ Modèle:Article
- ↑ Modèle:Chapitre
- ↑ Modèle:Article
- ↑ Modèle:Article
- ↑ Modèle:Chapitre
- ↑ 14,0 et 14,1 Modèle:Lien web