En criptografía , una función T es una función biyectiva que actualiza cada bit del estado de una manera que puede describirse como , o en palabras simples una función de actualización en la que cada bit del estado se actualiza mediante una combinación lineal del mismo bit y una función de un subconjunto de sus bits menos significativos. Si cada bit menos significativo se incluye en la actualización de cada bit del estado, dicha función T se llama triangular . Gracias a su biyectividad (sin colisiones, por lo tanto sin pérdida de entropía) independientemente de las funciones booleanas utilizadas y sin importar la selección de entradas (siempre que todas provengan de un lado del bit de salida), las funciones T ahora se usan ampliamente en criptografía para construir cifrados de bloque , cifrados de flujo , PRNG y funciones hash . Las funciones T fueron propuestas por primera vez en 2002 por A. Klimov y A. Shamir en su artículo "A New Class of Invertible Mappings". Cifrados como TSC-1, TSC-3 , TSC-4, ABC , Mir-1 y VEST se construyen con diferentes tipos de funciones T.
Debido a que las operaciones aritméticas como la suma , la resta y la multiplicación también son funciones T (funciones T triangulares), se pueden construir funciones T basadas en palabras eficientes en software combinando la lógica bit a bit con operaciones aritméticas. Otra propiedad importante de las funciones T basadas en operaciones aritméticas es la previsibilidad de su período , lo que resulta muy atractivo para los criptógrafos. Aunque las funciones T triangulares son naturalmente vulnerables a los ataques de adivinación y determinación, las transposiciones bit a bit bien elegidas entre rondas pueden neutralizar ese desequilibrio. En los cifrados eficientes en software , se puede hacer intercalando operaciones aritméticas con operaciones de intercambio de bytes y, en un pequeño grado, con operaciones de rotación bit a bit . Sin embargo, las funciones T triangulares siguen siendo muy ineficientes en hardware.
Las funciones T no tienen ninguna restricción en cuanto a los tipos y anchos de las funciones de actualización utilizadas para cada bit. La transposición posterior de los bits de salida y la iteración de la función T tampoco afectan la biyectividad. Esta libertad permite al diseñador elegir las funciones de actualización o cajas S que satisfacen todos los demás criterios criptográficos e incluso elegir funciones de actualización arbitrarias o dependientes de la clave (consulte la clave de familia).
De esta manera, se pueden construir fácilmente funciones T livianas y eficientes en términos de hardware con anchos idénticos de todas las funciones de actualización para cada bit del estado. Los acumuladores centrales de los cifrados VEST son un buen ejemplo de estas funciones T razonablemente livianas que se equilibran después de 2 rondas mediante la capa de transposición, lo que hace que todas las funciones de retroalimentación de 2 rondas tengan aproximadamente el mismo ancho y se pierda el sesgo de "función T" de depender solo de los bits menos significativos del estado.