Fonction booléenne
Un article de Wikipédia, l'encyclopédie libre.
Une fonction booléenne est une fonction de dans où désigne le corps fini à 2 éléments.
En fait, les fonctions booléennes sont simplement un autre nom des fonctions logiques. Toutefois, lorsque l'on s'attache aux propriétés algébriques de ces fonctions, l'appellation fonction booléenne est la plus utilisée.
Les fonctions booléennes, ou plus précisément leurs propriétés, interviennent notamment en cryptologie dans les boîtes-S, ainsi que dans les chiffrements par flot -- fonction de filtrage ou de combinaison des registres à décalage.
Sommaire |
[modifier] Propriétés
[modifier] Forme algébrique normale
Les corps finis et les polynômes interpolateurs de Lagrange conduisent rapidement à une propriété fondamentale des fonctions booléennes : la représentation dite « forme algébrique normale » (algebraic normal form ou ANF). Toute fonction booléenne peut s'écrire comme un polynôme en n variables à coefficients dans . Cependant, différents polynômes de donnent la même fonction. Par exemple, et donnent bien la même valeur lorsqu'ils sont évalués sur un élément de . Pour obtenir une représentation unique, il faut considérer les éléments de l'anneau quotient, soit :
Autrement dit, une fonction booléenne peut être représentée de manière unique par un polynôme de la forme :
On pose fréquemment , et , permettant l'écriture compacte :
- .
La notion de degré d'une fonction booléenne est alors évidente, il s'agit du degré maximal des monômes de son ANF.
[modifier] Linéarité et Non-linéarité
Les fonctions de degré 1 sont appelées les fonctions affines. En fait, ce sont des formes affines de l'espace vectoriel -- vu comme espace sur le corps . Ce sont bien évidemment les fonctions les plus simples (hormis les constantes). Il a fini par apparaître que « ressembler » à une fonction linéaire était une propriété pouvant être exploitée en cryptanalyse. La ressemblance en question se base sur le nombre de fois où deux fonctions prennent la même valeur, il s'agit de la distance de Hamming :
Les cryptographes utilisent le terme de non-linéarité pour parler de la distance d'une fonction booléenne à l'ensemble des fonctions affines :
L'intérêt de cette notion est de quantifier l'erreur commise si on remplace la fonction f par une fonction affine : dans le meilleur des cas, on se « trompe » fois sur 2n si n est le nombre de variables.
On montre, en utilisant la transformée de Fourier, que la non-linéarité d'une fonction booléenne est au plus de
Lorsque n est impair, cette borne supérieure est atteinte, on parle alors de fonction courbe.
Précisons que l'ensemble des fonctions affines a une importance particulière en théorie des codes correcteurs, au point qu'il possède un nom, le code de Reed-Muller d'ordre 1 (en n variables). L'ordre est bien entendu le degré maximal des fonctions. Ainsi, le code de Reed-Muller d'ordre en , usuellement noté est l'ensemble des fonctions en variables de degré au plus . Dans le contexte de la théorie des codes, la non-linéarité maximale se trouve correspondre au « rayon de recouvrement » du code , c'est-à-dire, la distance maximale entre un mot binaire de longueur 2n et un mot du code.
[modifier] Résilience
à faire
[modifier] Outil d'étude : la transformée de Fourier
La transformation de Fourier, appliquée aux fonctions booléennes, se révèle être un moyen très puissant pour explorer les différentes propriétés de ces objets. Elle est, par exemple, fréquemment utilisée pour étudier des propriétés cryptographiques comme la non-linéarité maximale. On la retrouve également dans des aspects plus appliquées : l'existence d'algorithmes de calcul de la transformée de Fourier de type FFT sert à décoder efficacement les codes de Reed et Muller. On trouvera dans la suite une presentation générale de la transformation de Fourier dans le cas des groupes abéliens finis qui est ensuite particularisée pour le cas des fonctions booléennes. Pour le cas général des groupes topologiques, voir la dualité de Pontryagin.
[modifier] Cas d'un groupe abélien fini
[modifier] Caractère et groupe dual
De manière générale, on peut définir une transformation de Fourier sur un groupe en utilisant la notion de caractère. Un caractère χ est un morphisme de dans , le groupe des racines de l'unité du corps des nombres complexes . Si est noté additivement, on a donc
- .
L'ensemble des caractères de peut être muni d'une structure de groupe en utilisant la multiplication entre applications
- pour χ,χ' des caractères et a un élément de .
On appele ce groupe le groupe dual de et on le notera .
[modifier] Définition de la transformée de Fourier
Lorsque est abélien et fini, son dual lui est isomorphe. On appele alors transformée de Fourier d'une application de dans et on note , la fonction :
C'est donc une fonction de dans . La transformation inverse est obtenue par
où cette fois, g va de dans et de dans . On démontre que c'est effectivement la transformation inverse, c'est-à-dire que l'on a en commençant par démontrer les relations d'orthogonalité
étant le neutre de .
[modifier] Formule de Poisson
Dans ce cadre, on a toujours une formule de Poisson. Pour la présenter, il faut introduire la notion de groupe orthogonal d'un sous-groupe
L'ensemble est un sous-groupe de , le groupe des caractères de . Il est donc muni de la multiplication des applications et nous le noterons donc de manière multiplicative. La notation usuelle désignera donc l'ensemble des éléments de la forme Ψχ pour . On gardera en mémoire que le groupe est, lui, noté additivement, puisque c'est un sous-groupe de . C'est donc la notation que nous utiliserons dans ce cas.
On peut alors écrire une première version de la formule de Poisson sous la forme relativement simple
avec un sous-groupe, .
De cette formulation, en l'appliquant à fΨ, pour et un caractère, on obtient une version équivalente :
[modifier] Application à
[modifier] Formes des caractères et isomorphisme avec le dual
Dans le cas qui nous interesse, commençons par prendre . Il est assez simple de voir qu'il n'y a que deux caractères possibles :
- χ0(a) = 1
- et χ1(a) = ( − 1)a
Comme est isomorphe à , on en déduit la forme des caractères de
où et . Assez naturellement, on prendra de tel sorte que si et seulement si yj = 0 et le caractère précédent sera alors noté χy, où .
Il est facile, dans le cas de , d'expliciter un isomorphisme entre et son dual
On utilisera cet isomorphisme pour identifier et , partout où cela aidera. Toutefois, nous allons commencé par écrire rigoureusement la transformée de Fourier d'une application f et nous changerons ensuite cette définition pour prendre en compte notre isomorphisme.
[modifier] Transformation de Fourier
En reprenant la notation usuelle , la transformée de Fourier est alors définie rigoureusement par
La fonction est donc de vers . Toutefois, pour tout χ, il existe tel que χ = χy. On fera donc l'abus d'identifier la transformée définie sur et l'application définie sur par
où est la somme .
On opère le même type d'identification pour la transformée inverse qui devient
On voit donc que l'un des intérêts de cette identification est d'avoir la transformation de Fourier et son inverse qui agissent sur les mêmes objets : des fonctions de dans .
[modifier] Formule de Poisson
Un autre intérêt de l'identification de et de son dual, et non moins agréable que celui évoqué précédemment, est de simplifier considérablement la formule de Poisson. En effet, on obtient alors
On remarquera que s'identifie naturellement à . C'est ce qui est fait dans la formule ci-dessus, passant ainsi d'une notation multiplicative pour à une notation additive (on a également utilisé b = − b dans le cas de ). On vérifira également que et sont des espaces vectoriels sur .
|
|