Fonction pseudo-aléatoire
Une fonction pseudo-aléatoire (ou PRF pour pseudorandom function) est une fonction dont l'ensemble des sorties possibles n'est pas efficacement distinguable des sorties d'une fonction aléatoire. Il ne faut pas confondre cette notion avec celle de générateur de nombres pseudo-aléatoires (PRNG). Une fonction qui est un PRNG garantit seulement qu'une de ses sorties prise seule semble aléatoire si son entrée a été choisie aléatoirement. En revanche, une fonction pseudo-aléatoire garantit cela pour toutes ses sorties, indépendamment de la méthode de choix de l'entrée.
En cryptographie, ce genre de fonction est extrĂȘmement important : il sert de brique de base Ă la conception de primitives cryptographiques, en particulier pour les algorithmes de chiffrement[1].
DĂ©finition
Formellement, une fonction pseudo-alĂ©atoire est une fonction , oĂč reprĂ©sente l'espace des clefs, reprĂ©sente le domaine de la fonction et son image.
La dĂ©finition de sĂ©curitĂ© associĂ©e, est donnĂ©e par le fait que n'importe quel adversaire polynomial est incapable de distinguer entre la sortie de de la sortie d'une fonction alĂ©atoire sur le mĂȘme domaine, conditionnĂ©e sur le choix de la clef [1].
Construction
L'existence de fonctions à sens unique est suffisante pour construire des fonctions pseudo-aléatoire. En effet il est possible de construire un générateur pseudo-aléatoire (PRG) à partir de fonctions à sens unique[2], et il est possible de construire une fonction pseudo-aléatoire à partir d'un générateur pseudo-aléatoire[1].
Applications
Chiffrement sémantiquement sûr
L'existence d'une fonction pseudo-aléatoire rend possible la conception d'un schéma de chiffrement symétrique sémantiquement sûr par la construction qui suit[1]. Intuitivement, elle consiste à utiliser la sortie de la fonction pseudo-aléatoire comme une sortie uniforme pour l'utiliser comme masque jetable. L'avantage réside en le fait que la clef n'est ici plus aussi longue que le message, mais va dépendre de la clef utilisée et de la taille de l'aléa (qui est dépendante de l'entrée de la fonction pseudo-aléatoire ).
- Génération de la clef: Une clef est générée aléatoirement dans l'espace des clefs de la PRF.
- Chiffrer: Pour chiffrer un message sous la clef , on calcule le message chiffré de la maniÚre suivante:
- Tirer un aléa .
- Renvoyer le message chiffrĂ©: , oĂč reprĂ©sente le ou exclusif bit Ă bit.
- Déchiffrer: Pour déchiffrer un message avec la clef , on calcule: .
La correction se vérifie par le fait que est involutif.
La sécurité s'obtient par réduction polynomiale depuis la sécurité du chiffrement pseudo-aléatoire. En d'autres termes, si un adversaire était capable de distinguer entre le schéma présenté ci-dessus et une chaßne aléatoire, alors on pourrait directement l'utiliser pour distinguer entre un message construit à l'aide d'une fonction pseudo-aléatoire d'une vraie fonction aléatoire, auquel cas le chiffré serait distribué uniformément sur l'espace des chiffrés (le ou exclusif d'une constante (ici un message)par une fonction uniforme est distribué comme une fonction uniforme).
Notes et références
Bibliographie
- [Katz et Lindell 2014] (en) Jonathan Katz et Yehuda Lindell, Introduction to Modern Cryptography, 2nd Edition, Boca Raton, Chapman and Hall, , 583 p. (ISBN 978-1-4665-7026-9, lire en ligne), « Chapitre 3.6.1 Pseudorandom Functions »
- [HĂ„stad et al. 1999] (en) Johan HĂ„stad, Russell Impagliazzo, Leonid A. Levin et Michael Luby, « A pseudorandom generator from any one-way function », SIAM Journal of Computing,â (DOI 10.1137/S0097539793244708)