Obfuscation indistinguable

De testwiki
Aller à la navigation Aller à la recherche

En cryptologie, l'obfuscation indistinguable ou iO[Note 1] est un modèle de sécurité dans lequel on peut espérer prouver certaines propriétés cryptologiques. Ce modèle postule l'existence d'un algorithme efficace dont l'effet approximatif est de réécrire un programme informatique, de sorte qu'un adversaire ne parvienne pas à distinguer de manière fiable deux programmes ainsi réécrits, lorsque ces derniers sont assez similaires. L'existence postulée d'un tel algorithme, pour lequel plusieurs candidats sont aujourd'hui proposés, a des conséquences importantes en cryptologie et en sécurité informatique.

Histoire et motivation

L'obfuscation indistinguable a été introduite en 2001 par les cryptologues Boaz Barak, Oded Goldreich, Russell Impagliazzo, Steven Rudich, Amit Sahai, Salil Vadhan et Ke Yang[1]Modèle:,[2]Modèle:,[3] après que ceux-ci ont montré qu'il n'existe pas d'algorithme d'obfuscation « en boîte noire », c'est-à-dire capable de masquer le fonctionnement de tout programme à un adversaire[Note 2]. Le modèle de l'obfuscation indistinguable est conçu pour échapper à ce résultat d'impossibilité tout en restant assez fort[4] :

Pour toutes ces raisons, l'obfuscation indistinguable est devenue un des concepts théoriques centraux en cryptologie[5]Modèle:,[15]. La question s'est donc rapidement posée de construire des algorithmes compatibles avec ce modèle : il s'agit à l'heure actuelle (2018) d'un problème encore largement ouvert. Plusieurs candidats ont été proposés, initialement à partir d'applications mulilinéaires cryptographiques[16], dont la sécurité est encore mal comprise[17]. On sait aujourd'hui qu'une application trilinéaire suffit[18], et il existe même un candidat d'obfuscation indistinguable construit à partir d'accouplements et d'apprentissage avec erreurs[19].

Définition

On considère une classe 𝒞λde circuits (généralement les classes NC1 ou P/poly), et on dit qu'une machine de Turing probabiliste IO est un obfuscateur indistinguable pour 𝒞λ lorsque les deux propriétés suivantes sont satisfaites[19] :

  • Pour tout paramètre de sécurité λ, tout circuit C𝒞λ de la forme C:{0,1}n{0,1}nn dépend de λ, et toute entrée x{0,1}n, la fonctionnalité du circuit est préservée par obfuscation, c'est-à-dire : Pr[C(x)=C(x)CIO(λ,C)]=1
  • Pour tout algorithme D(modélisé comme une machine de Turing probabiliste également) il existe une fonction négligeable α telle que ce qui suit est vrai : pour tout paramètre de sécurité λ, toute paire de circuits C1,C2𝒞λ tels que C1(x)=C2(x) pour toute entrée x, l'algorithme D ne peut distinguer une obfuscation de C1d'une obfuscation de C2; mathématiquement : |Pr[D(IO(λ,C1))=1]Pr[D(IO(λ,C2))=1]|α(λ)negl(λ)
  • Pour tout circuit C𝒞λ, la taille du circuit après obfuscation CIO(λ,C) est bornée par un polynôme en λet en |C|.

Notes et références

Notes

  1. Pour l'anglais indistinguishability obfuscation. Il ne semble pas s'être imposé de traduction francophone de l'expression, qui pourrait également être rendue par « obfuscation d'indistinction ». Dans tous les cas l'expression « obfuscation indistinguable » semble aujourd'hui l'expression francophone majoritaire (voir par exemple Modèle:Ouvrage.
  2. Précisément, ils ont montré l'existence de fonctions impossibles à obfusquer fstelles que pour toute implémentation de fsil existe une procédure efficace d'extraction de s(le « secret » de fs). De plus, de telles fonctions existent avec une complexité de circuit faible.

Références

Modèle:Références

Modèle:Palette

Modèle:Portail