En el campo matemático de la combinatoria , una función doblada es una función booleana que es máximamente no lineal; es lo más diferente posible del conjunto de todas las funciones lineales y afines cuando se mide por la distancia de Hamming entre tablas de verdad . Concretamente, esto significa que la correlación máxima entre la salida de la función y una función lineal es mínima. Además, las derivadas de una función doblada son funciones booleanas balanceadas , por lo que para cualquier cambio en las variables de entrada hay un 50 por ciento de posibilidades de que el valor de salida cambie.
La no linealidad máxima significa que es difícil aproximar una función doblada mediante una función afín (lineal), una propiedad útil en la defensa contra el criptoanálisis lineal . Además, detectar un cambio en la salida de la función no brinda información sobre qué cambio ocurrió en las entradas, lo que hace que la función sea inmune al criptoanálisis diferencial .
Las funciones dobladas fueron definidas y nombradas en la década de 1960 por Oscar Rothaus en una investigación que no se publicó hasta 1976. [1] Se han estudiado ampliamente por sus aplicaciones en criptografía , pero también se han aplicado al espectro ensanchado , la teoría de codificación y el diseño combinatorio . La definición se puede ampliar de varias maneras, lo que da lugar a diferentes clases de funciones dobladas generalizadas que comparten muchas de las propiedades útiles del original.
Se sabe que VA Eliseev y OP Stepchenkov estudiaron funciones dobladas, que llamaron funciones mínimas , en la URSS en 1962. [2] Sin embargo, sus resultados aún no han sido desclasificados.
Las funciones dobladas también se conocen como funciones booleanas perfectamente no lineales ( PN ). Ciertas funciones que están lo más cerca posible de la no linealidad perfecta (por ejemplo, funciones de un número impar de bits o funciones vectoriales) se conocen como casi perfectamente no lineales ( APN ). [3]
Las funciones dobladas se definen en términos de la transformada de Walsh . La transformada de Walsh de una función booleana es la función dada por
donde a · x = a 1 x 1 + a 2 x 2 + … + a n x n (mod 2) es el producto escalar en Znúmero
2. [4] Alternativamente, sea S 0 ( a ) = { x ∈ Znúmero
2 : f ( x ) = a · x } y S 1 ( a ) = { x ∈ Znúmero
2 : f ( x ) ≠ a · x } . Entonces | S 0 ( a ) | + | S 1 ( a ) | = 2 n y por lo tanto
Para cualquier función booleana f y a ∈ Znúmero
2, la transformación se encuentra en el rango
Además, la función lineal f 0 ( x ) = a · x y la función afín f 1 ( x ) = a · x + 1 corresponden a los dos casos extremos, ya que
Por lo tanto, para cada a ∈ Znúmero
2El valor de caracteriza dónde la función f ( x ) se encuentra en el rango de f 0 ( x ) a f 1 ( x ).
Rothaus definió una función doblada como una función booleana cuya transformada de Walsh tiene un valor absoluto constante . Las funciones dobladas son, en cierto sentido, equidistantes de todas las funciones afines, por lo que son igualmente difíciles de aproximar con cualquier función afín.
Los ejemplos más simples de funciones dobladas, escritas en forma normal algebraica , son F ( x 1 , x 2 ) = x 1 x 2 y G ( x 1 , x 2 , x 3 , x 4 ) = x 1 x 2 ⊕ x 3 x 4 . Este patrón continúa: x 1 x 2 ⊕ x 3 x 4 ⊕ … ⊕ x n −1 x n es una función doblada para cada n par , pero hay una amplia variedad de otras funciones dobladas a medida que n aumenta. [5] La secuencia de valores (−1) f ( x ) , con x ∈ Znúmero
2tomada en orden lexicográfico , se denomina secuencia doblada ; las funciones dobladas y las secuencias dobladas tienen propiedades equivalentes. En esta forma ±1, la transformada de Walsh se calcula fácilmente como
donde W (2 n ) es la matriz de Walsh ordenada natural y la secuencia se trata como un vector columna . [6]
Rothaus demostró que las funciones dobladas existen sólo para n par , y que para una función doblada f , para todo a ∈ Znúmero
2. [4] De hecho, , donde g también está doblado. En este caso, , por lo que f y g se consideran funciones duales . [6]
Toda función doblada tiene un peso de Hamming (número de veces que toma el valor 1) de 2 n −1 ± 2 n /2−1 , y de hecho concuerda con cualquier función afín en uno de esos dos números de puntos. Por lo tanto, la no linealidad de f (número mínimo de veces que es igual a cualquier función afín) es 2 n −1 − 2 n /2−1 , el máximo posible. Por el contrario, cualquier función booleana con no linealidad 2 n −1 − 2 n /2−1 está doblada. [4] El grado de f en forma normal algebraica (llamado orden no lineal de f ) es como máximo norte/2 (para n > 2 ). [5]
Aunque las funciones dobladas son extremadamente raras entre las funciones booleanas de muchas variables, existen de muchos tipos diferentes. Se han realizado investigaciones detalladas sobre clases especiales de funciones dobladas, como las homogéneas [ 7] o las que surgen de un monomio sobre un cuerpo finito [8] , pero hasta ahora las funciones dobladas han desafiado todos los intentos de enumeración o clasificación completas.
Existen varios tipos de construcciones para funciones dobladas. [2]
Ya en 1982 se descubrió que las secuencias de longitud máxima basadas en funciones dobladas tienen propiedades de correlación cruzada y autocorrelación que rivalizan con las de los códigos Gold y Kasami para su uso en CDMA . [9] Estas secuencias tienen varias aplicaciones en técnicas de espectro ensanchado .
Las propiedades de las funciones dobladas son naturalmente de interés en la criptografía digital moderna , que busca oscurecer las relaciones entre la entrada y la salida. En 1988, Forré reconoció que la transformada de Walsh de una función se puede utilizar para demostrar que satisface el criterio de avalancha estricta (SAC) y las generalizaciones de orden superior, y recomendó esta herramienta para seleccionar candidatos para buenas cajas S que logren una difusión casi perfecta . [10] De hecho, las funciones que satisfacen el SAC al orden más alto posible siempre están dobladas. [11] Además, las funciones dobladas están lo más lejos posible de tener lo que se llama estructuras lineales , vectores distintos de cero a tales que f ( x + a ) + f ( x ) es una constante. En el lenguaje del criptoanálisis diferencial (introducido después de que se descubriera esta propiedad), la derivada de una función doblada f en cada punto distinto de cero a (es decir, f a ( x ) = f ( x + a ) + f ( x )) es una función booleana equilibrada , que toma cada valor exactamente la mitad del tiempo. Esta propiedad se llama no linealidad perfecta . [5]
Dadas estas buenas propiedades de difusión, la resistencia aparentemente perfecta al criptoanálisis diferencial y la resistencia por definición al criptoanálisis lineal , las funciones dobladas podrían parecer en un principio la opción ideal para funciones criptográficas seguras como las S-boxes. Su defecto fatal es que no pueden ser balanceadas. En particular, una S-box invertible no puede construirse directamente a partir de funciones dobladas, y un cifrado de flujo que utilice una función de combinación doblada es vulnerable a un ataque de correlación . En cambio, uno podría comenzar con una función doblada y complementar aleatoriamente los valores apropiados hasta que el resultado esté balanceado. La función modificada todavía tiene alta no linealidad, y como tales funciones son muy raras, el proceso debería ser mucho más rápido que una búsqueda de fuerza bruta. [5] Pero las funciones producidas de esta manera pueden perder otras propiedades deseables, incluso no satisfacer el SAC, por lo que es necesario realizar pruebas cuidadosas. [11] Varios criptógrafos han trabajado en técnicas para generar funciones balanceadas que preserven la mayor cantidad posible de las buenas cualidades criptográficas de las funciones dobladas. [12] [13] [14]
Parte de esta investigación teórica se ha incorporado a algoritmos criptográficos reales. El procedimiento de diseño CAST , utilizado por Carlisle Adams y Stafford Tavares para construir las cajas S para los cifrados de bloque CAST-128 y CAST-256 , hace uso de funciones dobladas. [14] La función hash criptográfica HAVAL utiliza funciones booleanas construidas a partir de representantes de las cuatro clases de equivalencia de funciones dobladas en seis variables. [15] El cifrado de flujo Grain utiliza un NLFSR cuyo polinomio de retroalimentación no lineal es, por diseño, la suma de una función doblada y una función lineal. [16]
En la monografía de Tokareva de 2015 se describen más de 25 generalizaciones diferentes de funciones dobladas. [2] Hay generalizaciones algebraicas ( funciones dobladas de valor q , funciones dobladas p -arias, funciones dobladas sobre un cuerpo finito, funciones dobladas booleanas generalizadas de Schmidt, funciones dobladas de un grupo abeliano finito en el conjunto de números complejos en el círculo unitario, funciones dobladas de un grupo abeliano finito en un grupo abeliano finito, funciones dobladas no abelianas, funciones dobladas vectoriales G, funciones dobladas multidimensionales en un grupo abeliano finito), generalizaciones combinatorias (funciones dobladas simétricas, funciones dobladas homogéneas, funciones dobladas simétricas de rotación, funciones dobladas normales, funciones dobladas autoduales y antiautoduales, funciones dobladas parcialmente definidas, funciones en meseta, funciones dobladas Z y funciones dobladas cuánticas) y generalizaciones criptográficas (funciones semi-dobladas, funciones dobladas balanceadas, funciones parcialmente dobladas, funciones hiper-dobladas, funciones dobladas de orden superior, funciones k -dobladas).
La clase más común de funciones dobladas generalizadas es el tipo mod m , tal que
tiene valor absoluto constante m n /2 . Las funciones no lineales perfectas , aquellas tales que para todo a distinto de cero , f ( x + a ) − f ( a ) toma cada valor m n −1 veces, son funciones dobladas generalizadas. Si m es primo , lo inverso es cierto. En la mayoría de los casos, solo se consideran los primos m . Para los primos impares m , existen funciones dobladas generalizadas para cada n positivo , par e impar. Tienen muchas de las mismas buenas propiedades criptográficas que las funciones dobladas binarias. [17] [18]
Las funciones semicurvadas son una contraparte de orden impar de las funciones curvadas. Una función semicurvada es aquella con n impar, de modo que solo toma los valores 0 y m ( n +1)/2 . También tienen buenas características criptográficas y algunas de ellas están balanceadas, tomando todos los valores posibles con la misma frecuencia. [19]
Las funciones parcialmente dobladas forman una clase grande definida por una condición en la transformada de Walsh y las funciones de autocorrelación. Todas las funciones afines y dobladas están parcialmente dobladas. Esto es a su vez una subclase propia de las funciones en meseta . [20]
La idea detrás de las funciones hipercurvadas es maximizar la distancia mínima a todas las funciones booleanas provenientes de monomios biyectivos en el cuerpo finito GF(2 n ), no solo a las funciones afines. Para estas funciones, esta distancia es constante, lo que puede hacerlas resistentes a un ataque de interpolación .
Se han dado otros nombres relacionados a clases de funciones criptográficamente importantes , como funciones casi dobladas y funciones torcidas . Si bien no son funciones dobladas en sí mismas (ni siquiera son funciones booleanas), están estrechamente relacionadas con las funciones dobladas y tienen buenas propiedades de no linealidad.