Tiny Encryption Algorithm
# Tiny Encryption Algorithm

En criptografía, el Tiny Encryption Algorithm (TEA) (Algoritmo Diminuto de Cifrado) es un algoritmo para el cifrado por bloques notable por su simplicidad de descripción e implementación (generalmente unas pocas líneas de código). Fue diseñado por David Wheeler y Roger Needham del Cambridge Computer Laboratory, y presentado por vez primera en 1994 en el Fast Software Encryption Workshop (Wheeler y Needham, 1994). No está sujeto a ningún tipo de patente.

## Propiedades

TEA opera sobre bloques de 64 bits y usa una clave de 128 bits. Contiene una estructura de red de Feistel aconsejada en 64 rondas, generalmente implementadas en parejas denominadas ciclos. Posee una generación de claves extremadamente simple, mezclando todo el contenido de la clave de la misma manera para cada ciclo. Se utilizan distintos múltiplos de una constante mágica para prevenir ataques basados en la simetría de las rondas.

TEA tiene algunas debilidades. La más notable es que padece de claves equivalentes: cada clave es equivalente a otras tres, y esto implica que la longitud de clave efectiva es solo de 126 bits (Kelsey et. al., 1996). Esta debilidad dio lugar a un método para crackear la consola Xbox de Microsoft, donde se utilizaba el algoritmo como una función resumen o hash. TEA es también susceptible a ataques de clave relacionada que requieren $2^{23}$ textos planos escogidos para un par de claves relacionadas, con una complejidad cronológica de $2^{32}$ (Kelsey et. al., 1997).

Debido a estas debilidades, se han diseñado algunas revisiones de TEA, incluyendo XTEA.

## Código de referencia

A continuación se muestra una adaptación de las rutinas de cifrado y descifrado, publicadas bajo dominio público por David Wheeler y Roger Needham:

