En criptografía , el algoritmo de cifrado Tiny Encryption ( TEA ) es un cifrador de bloques que destaca por su sencillez de descripción e implementación , generalmente con solo unas pocas líneas de código. Fue diseñado por David Wheeler y Roger Needham del Laboratorio de Computación de Cambridge ; se presentó por primera vez en el taller Fast Software Encryption en Lovaina en 1994 y se publicó por primera vez en las actas de dicho taller. [ 4 ]
El cifrado no está sujeto a ninguna patente .
Propiedades
TEA opera con dos enteros sin signo de 32 bits (que podrían derivarse de un bloque de datos de 64 bits ) y utiliza una clave de 128 bits . Tiene una estructura Feistel con 64 rondas sugeridas, implementadas típicamente en pares denominados ciclos . Tiene una programación de clave extremadamente simple , mezclando todo el material de la clave exactamente de la misma manera para cada ciclo. Se utilizan diferentes múltiplos de una constante mágica para prevenir ataques simples basados en la simetría de las rondas. La constante mágica, 2654435769 o 0x9E3779B9, se elige como ⌊2 32 ⁄ 𝜙⌋ , donde 𝜙 es la proporción áurea (como un número sin ninguna intención oculta ). [ 4 ]
TEA tiene algunas debilidades. La más notable es que sufre de claves equivalentes: cada clave es equivalente a otras tres, lo que significa que el tamaño efectivo de la clave es de solo 126 bits . [ 5 ] Como resultado, TEA es particularmente malo como función hash criptográfica . Esta debilidad llevó a un método para hackear la consola de juegos Xbox de Microsoft , donde el cifrado se usó como función hash. [ 6 ] TEA también es susceptible a un ataque de clave relacionada que requiere 2 23 textos planos elegidos bajo un par de claves relacionadas, con una complejidad temporal de 2 32. [ 2 ] Debido a estas debilidades, se diseñó el cifrado XTEA .
Versiones
La primera versión publicada de TEA fue complementada por una segunda versión que incorporó extensiones para hacerla más segura. Block TEA (que se especificó junto con XTEA ) opera con bloques de tamaño arbitrario en lugar de los bloques de 64 bits de la versión original.
Una tercera versión ( XXTEA ), publicada en 1998, describía mejoras adicionales para aumentar la seguridad del algoritmo Block TEA.
Código de referencia
A continuación se presenta una adaptación de las rutinas de cifrado y descifrado de referencia en C , publicadas en el dominio público por David Wheeler y Roger Needham: [ 4 ]
#include <stdint.h>void encrypt ( uint32_t v [ 2 ], const uint32_t k [ 4 ]) { uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0 , i ; /* configuración */ uint32_t delta = 0x9E3779B9 ; /* una constante de programación de 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 del ciclo básico */ sum += delta ; v0 += (( v1 << 4 ) + k0 ) ^ ( v1 + sum ) ^ (( v1 >> 5 ) + k1 ); v1 += (( v0 << 4 ) + k2 ) ^ ( v0 + suma ) ^ (( v0 >> 5 ) + k3 ); } /* fin del ciclo */ v [ 0 ] = v0 ; v [ 1 ] = v1 ; }void decrypt ( uint32_t v [ 2 ], const uint32_t k [ 4 ]) { uint32_t v0 = v [ 0 ], v1 = v [ 1 ], sum = 0xC6EF3720 , i ; /* configuración; la suma es (delta << 5) & 0xFFFFFFFF */ uint32_t delta = 0x9E3779B9 ; /* una constante de programación de 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 del ciclo básico */ v1 -= (( v0 << 4 ) + k2 ) ^ ( v0 + suma ) ^ (( v0 >> 5 ) + k3 ); v0 -= (( v1 << 4 ) + k0 ) ^ ( v1 + suma ) ^ (( v1 >> 5 ) + k1 ); suma -= delta ; } /* fin del ciclo */ v [ 0 ] = v0 ; v [ 1 ] = v1 ; }Cabe destacar que la implementación de referencia opera sobre valores numéricos multibyte. El documento original no especifica cómo derivar los números sobre los que opera a partir de datos binarios u otro tipo de contenido.
Véase también
- RC4 : un cifrado de flujo que, al igual que TEA, está diseñado para ser muy sencillo de implementar.
- XTEA – Primera versión del sucesor de Block TEA.
- XXTEA – Sucesor de Block TEA corregido.
- Treyfer : un algoritmo de cifrado sencillo y compacto con un tamaño de clave y de bloque de 64 bits.
Notas
- ↑ Matthew D. Russell (27 de febrero de 2004). "Pequeña dimensión: una visión general de TEA y cifrados relacionados" . Archivado del original el 12 de agosto de 2007.
- 1 2 Kelsey, John; Schneier, Bruce ; Wagner, David (1997). "Criptoanálisis de clave relacionada de 3-WAY, Biham-DES, CAST, DES-X, NewDES, RC2 y TEA". Seguridad de la información y las comunicaciones . Notas de clase en ciencias de la computación. Vol. 1334. págs. 233–246 . CiteSeerX 10.1.1.35.8112 . doi : 10.1007/BFb0028479 . ISBN 978-3-540-63696-0.
- ↑ Bogdanov, Andrey; Wang, Meiqin (2012). "Criptoanálisis lineal de correlación cero con complejidad de datos reducida". Cifrado de software rápido (PDF) . Notas de clase en ciencias de la computación. Vol. 7549. págs. 29–48 . doi : 10.1007/978-3-642-34047-5_3 . ISBN 978-3-642-34046-8.
- 1 2 3 Wheeler, David J.; Needham, Roger M. (16 de diciembre de 1994). «TEA, un pequeño algoritmo de cifrado». Cifrado rápido de software . Notas de clase en ciencias de la computación. Vol. 1008. Lovaina, Bélgica. págs. 363–366 . doi : 10.1007/3-540-60590-8_29 . ISBN 978-3-540-60590-4.
{{cite book}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) - ↑ Kelsey, John; Schneier, Bruce ; Wagner, David (1996). "Criptoanálisis de la programación de claves de IDEA, G-DES, GOST, SAFER y Triple-DES". Avances en criptología — CRYPTO '96 (PDF) . Notas de clase en ciencias de la computación. Vol. 1109. págs. 237–251 . doi : 10.1007/3-540-68697-5_19 . ISBN 978-3-540-61512-5Archivado del original (PDF) el 8 de febrero de 2012. Consultado el 25 de febrero de 2008 .
- ↑ Michael Steil. "17 errores que Microsoft cometió en el sistema de seguridad de Xbox" . Archivado del original el 16 de abril de 2009.
Referencias
- Andem, Vikram Reddy (2003). "Un criptoanálisis del algoritmo de cifrado Tiny, tesis de maestría" (PDF) . Tuscaloosa: Universidad de Alabama.
- Hernández, Julio César; Isasi, Pedro; Ribagorda, Arturo (2002). "Una aplicación de algoritmos genéticos al criptoanálisis de TEA de una ronda" . Actas del Simposio de 2002 sobre Inteligencia Artificial y su Aplicación .
- Hernández, Julio César; Sierra, José María; Isasi, Pedro; Ribargorda, Arturo (2003). «Finding efficient distincters for cryptographic mappings, with an application to the block cipher TEA». The 2003 Congress on Evolutionary Computation, 2003. CEC '03 . Vol. 3. pp. 2189–2193 . doi : 10.1109/CEC.2003.1299943 . hdl : 10016/3944 . ISBN 978-0-7803-7804-9. S2CID 62216777 .
- Hernández, Julio César; Sierra, José María; Ribagorda, Arturo; Ramos, Benjamín; Mex-Perera, JC (2001). "Distinguir TEA de una permutación aleatoria: las versiones de ronda reducida de TEA no tienen el SAC ni generan números aleatorios". Criptografía y codificación (PDF) . Notas de clase en informática. Vol. 2260. pp. 374–377 . doi : 10.1007/3-540-45325-3_34 . ISBN 978-3-540-43026-1Archivado del original (PDF) el 26 de abril de 2012.
- Moon, Dukjae; Hwang, Kyungdeok; Lee, Wonil; Lee, Sangjin; Lim, Jongin (2002). "Criptoanálisis diferencial imposible de XTEA y TEA de ronda reducida". Cifrado rápido de software (PDF) . Notas de clase en ciencias de la computación. Vol. 2365. págs. 49–60 . doi : 10.1007/3-540-45661-9_4 . ISBN 978-3-540-44009-3.
- Hong, Seokhie; Hong, Deukjo; Ko, Youngdai; Chang, Donghoon; Lee, Wonil; Lee, Sangjin (2004). "Criptoanálisis diferencial de TEA y XTEA". Seguridad de la información y criptología - ICISC 2003. Notas de clase en ciencias de la computación. Vol. 2971. pp. 402–417 . doi : 10.1007/978-3-540-24691-6_30 . ISBN 978-3-540-21376-5.
Enlaces externos
- Vectores de prueba para TEA
- Implementación en JavaScript de XXTEA con Base64. Archivado el 28 de abril de 2006 en la Wayback Machine.
- Implementación de XTEA en PHP (idioma alemán)
- Implementación en JavaScript de XXTEA
- Implementaciones de XTEA en JavaScript y PHP (texto en neerlandés)
- Implementación de AVR ASM
- Algoritmo de cifrado escalable SEA para pequeñas aplicaciones integradas (Standaert, Piret, Gershenfeld, Quisquater - julio de 2005, UCL Bélgica y MIT EE. UU.)
- Cifrados de bloques
- Cifrados de bloques rotos
- Seguridad informática en el Reino Unido
- Cifrados de Feistel
- Cifrados gratuitos
- Historia de la informática en el Reino Unido
- Laboratorio de Informática de la Universidad de Cambridge