Fonction courbe
Une fonction booléenne avec un nombre pair de variables est dite fonction courbe — bent dans la terminologie anglosaxonne — si sa non-linéarité est maximale. Cela correspond à être à distance maximale — pour la distance de Hamming — de l'ensemble des fonctions booléennes linéaires, encore appelé code de Reed et Müller d'ordre 1. On dispose d'une borne générale sur la non-linéarité des fonctions booléennes, mais cette borne ne peut être atteinte que lorsque le nombre de variables est pair. De plus, dans ce cas, on sait construire des fonctions atteignant cette borne, par exemple la fonction
est courbe. L'ensemble des fonctions affines formant un espace vectoriel sur le corps à deux éléments, il est facile de voir que si est courbe, toute fonction , avec fonction affine, est également courbe, puisque dans ce cas et sont à la même distance de l'ensemble des fonctions affines.
Cet objet mathématique a été introduit par O. Rothaus en 1976 (mais il le connaissait déjà durant les années 1960).
Les propriétés hautement non-linéaires des fonctions courbes sont utilisées en cryptologie pour constituer des S-Boxes (tables de substitution) comme dans le chiffrement CAST-128, ce principe a été considéré dès 1992 par C. Adams dans "On immunity against Biham and Shamir's differential cryptanalysis".
Une fonction courbe a l'avantage d'avoir un spectre plat (voir transformée de Fourier ou transformation de Hadamard-Walsh), ce qui fait qu'il n'existe pas de «bonne» approximation linéaire. Vu la définition de ces fonctions, cela paraît naturel. Cette caractéristique permet de contrer la cryptanalyse linéaire.
Un inconvénient important de ces fonctions est de ne pas être équilibrées : elles ne peuvent pas prendre autant de fois la valeur 0 que la valeur 1. De ce fait, certaines applications sont à exclure car le biais introduit par une fonction courbe rendrait le système de chiffrement vulnérable à des attaques différentes de la cryptanalyse linéaire. D'une certaine manière c'est un problème récurrent dans la conception d'algorithmes de chiffrements symétriques : on ne peut pas simultanément avoir la meilleure résistance à toutes les attaques connues. Les fonctions courbes sont optimales pour la cryptanalyse linéaire, mais pas pour les attaques par corrélation par exemple.