Articulo de referencia

Algoritmo de cifrado diminuto

{{cite web|title=Tinyness: An Overview of TEA and Related Ciphers|author=Matthew D. Russell|date=27 Feb 2004|url=http://www-users.cs.york.ac.uk/~matthew/TEA/ |archive-url=https:...

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

  1. 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.
  2. 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.
  3. 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.
  4. 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 )
  5. 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 .
  6. 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.
  • 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.)
Algoritmo de cifrado diminuto | Hispanopedia Wiki