Algoritmo de cifrado minúsculo
| Algoritmo de cifrado minúsculo | |
|---|---|
| Dos pasos de la función Feistel (1 ciclo) en el TEA | |
| General | |
| Diseñadores | Roger NeedhamDavid Wheeler |
| Primera publicación | 1994 |
| sucesores | XTEA , XXTEA |
| Detalles | |
| Tamaño de clave | 128 bits |
| Tamaño de bloque | 64 bits |
| Estructura | Red Feistel |
| Número de pases | variables: recomendación de 64 pasos de la función Feistel (32 ciclos) |
| Mejor criptoanálisis | |
| El TEA sufre el problema de la clave equivalente (Kelsey et al., 1996 ) y se puede piratear mediante un ataque relacionado con la clave utilizando 2 23 texto sin formato elegido y un tiempo de 2 32 . | |
En criptografía , el Tiny Encryption Algorithm (TEA) es un cifrado de bloque conocido por su simplicidad y facilidad de implementación (generalmente, unas pocas líneas de código son suficientes). Fue concebido por David Wheeler y Roger Needham del departamento de informática de la Universidad de Cambridge [1] , y presentado por primera vez en 1994 en el segundo Fast Software Encryption , celebrado en Lovaina ( Bélgica ) [2] .
El algoritmo no está sujeto a ninguna patente .
Propiedades
El TEA opera en bloques de 64 bits y utiliza una clave criptográfica de 128 bits de largo . Tiene una estructura de red Feistel con 64 pasos (sugeridos), normalmente implementados en pares llamados bucles . Tiene una función de gestión de claves muy sencilla , que mezcla todos sus bits de la misma forma en cada ciclo. Además, se utilizan múltiplos de una constante para hacer que el algoritmo sea resistente a ataques más simples basados en la simetría de los pasos. Esta constante, 2654435769 ( ), se elige para estar donde está la proporción áurea .
El TEA tiene algunas debilidades, la más grave de las cuales está relacionada con las claves equivalentes : cada clave equivale a otras 3, lo que significa que la longitud efectiva de la clave es de solo 126 bits [3] . Como consecuencia de esto, la TEA de ninguna manera se denomina función hash criptográfica . Esta debilidad se usó para piratear la consola Xbox de Microsoft , donde el cifrado se usó como una función hash para controlar el software de arranque [4] . El TEA también es susceptible a un ataque relacionado con la clave , que requiere 2 23 textos sin formato elegidos con un par de claves correlacionadas y un tiempo de 2 32 [5] .
El tamaño mínimo inusual del TEA lo convertiría en una opción interesante en muchas situaciones donde existen restricciones extremas relacionadas con los recursos, por ejemplo, en sistemas de hardware antiguos donde la cantidad de memoria suele ser mínima. Por otro lado, la probada inseguridad del algoritmo sugiere utilizar alguna de las variantes que se han presentado para corregir las debilidades de su estructura.
Versiones
A la primera versión pública del TEA le siguió una segunda versión denominada XTEA , eXtended TEA , que incorporó algunas modificaciones destinadas a hacer más seguro el algoritmo: a diferencia del algoritmo original, integra una función de gestión de claves más compleja y una sucesión de bits distinta. Operaciones de cambio , XOR y suma. Junto al XTEA también se presentó el Bloque TEA , idéntico al XTEA pero que itera sobre todo el mensaje considerándolo como un único bloque.
Una tercera versión, denominada Bloque corregido TEA (conocido como XXTEA ), se publicó en 1998 : deriva de XTEA pero se diferencia en la posibilidad de utilizar bloques de datos de cualquier longitud.
Código de referencia
Las siguientes son adaptaciones C de las rutinas de cifrado y descifrado TEA , publicadas en el dominio público por David Wheeler y Roger Needham:
#incluir <stdint.h>
cifrado vacío ( uint32_t * v , uint32_t * k ) {
uint32_t v0 = v [ 0 ], v1 = v [ 1 ], suma = 0 , yo ; / * configuración * /
uint32_t delta = 0x9e3779b9 ; / * una constante de programación clave * /
uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /*clave de caché*/
for ( i = 0 ; i < 32 ; i ++ ) { / * inicio ciclo básico * /
suma + = delta ;
v0 + = (( v1 << 4 ) + k0 ) ^ ( v1 + suma ) ^ (( v1 >> 5 ) + k1 );
v1 + = (( v0 << 4 ) + k2 ) ^ ( v0 + suma ) ^ (( v0 >> 5 ) + k3 ); } / * fin de ciclo * /
v [ 0 ] = v0 ; v [ 1 ] = v1 ;
}
descifrado vacío ( uint32_t * v , uint32_t * k ) {
uint32_t v0 = v [ 0 ], v1 = v [ 1 ], suma = 0xC6EF3720 , yo ; / * configurar; suma == delta * 32 * /
uint32_t delta = 0x9e3779b9 ; / * una constante de programación clave * /
uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /*clave de caché*/
for ( i = 0 ; i < 32 ; i ++ ) { / * inicio ciclo básico * /
v1 - = (( v0 << 4 ) + k2 ) ^ ( v0 + suma ) ^ (( v0 >> 5 ) + k3 );
v0 - = (( v1 << 4 ) + k0 ) ^ ( v1 + suma ) ^ (( v1 >> 5 ) + k1 );
suma - = delta ; } / * fin de ciclo * /
v [ 0 ] = v0 ; v [ 1 ] = v1 ;
}
Tenga en cuenta que la implementación estándar está vinculada a una arquitectura de microprocesador específica , lo que significa que las consideraciones sobre el orden de los bytes son importantes cuando el texto cifrado se distribuye y procesa en diferentes sistemas. El documento original no especifica ningún detalle sobre la arquitectura de los microprocesadores, por lo que cualquiera que implemente un sistema que utilice TEA debe considerar esos detalles por sí mismo.
Notas
- ^ Sitio oficial del Laboratorio de Computación de la Universidad de Cambridge
- ^ TEA, un pequeño algoritmo de encriptación
- ^ Bruce Schneier y David Wagner: Criptoanálisis de programación de claves de IDEA, G-DES, GOST, SAFER y Triple-DES ( 1996 )
- ^ 17 errores de Microsoft cometidos en el sistema de seguridad de Xbox Archivado el 16 de abril de 2009 en Internet Archive .
- ^ Bruce Schneier y David Wagner: Criptoanálisis de claves relacionadas de 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 y TEA ( 1997 )
Artículos relacionados
- RC4 : un cifrado de flujo que, al igual que el TEA, está diseñado para ser muy simple de implementar.
- XTEA - The Block TEA, la primera versión modificada del TEA.
- XXTEA - El bloque corregido TEA, la segunda versión modificada del TEA.
Otras referencias
- Un criptoanálisis de la TEA ( 2003 )
- Una aplicación de algoritmos genéticos para el criptoanálisis de un ciclo TEA ( 2002 )
Enlaces externos
- Un criptoanálisis del Tiny Encryption Algorithm ( PDF ), en cs.ua.edu .
- Nociones sobre TEA e implementaciones en diferentes idiomas , en el 143.53.36.235:8080 . Consultado el 14 de octubre de 2008 (archivado desde el original el 12 de junio de 2017) .
- Vectores de prueba para TEA ,en cix.co.uk.
- Implementación PHP de XTEA , en php-einfach.de .
- Implementación JavaScript de TEA , en movable-type.co.uk .