stringtranslate.com

Algoritmo de cifrado minúsculo

En criptografía , el algoritmo de cifrado Tiny ( TEA ) es un cifrador de bloques que destaca por su simplicidad de descripción e implementación , normalmente 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 ese taller. [4]

El cifrado no está sujeto a ninguna patente .

Propiedades

TEA opera con dos enteros sin signo de 32 bits (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 un programa de claves 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 evitar 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 que no se esconde bajo la manga ). [4]

TEA tiene algunas debilidades. En particular, sufre de claves equivalentes: cada clave es equivalente a otras tres, lo que significa que el tamaño de clave efectivo es de solo 126 bits . [5] Como resultado, TEA es especialmente malo como función hash criptográfica . Esta debilidad condujo 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 simples elegidos bajo un par de claves relacionadas, con una complejidad de tiempo de 2 32. [2] Debido a estas debilidades, se diseñó el cifrado XTEA .

Versiones

La primera versión publicada de TEA se complementó con una segunda versión que incorporó extensiones para hacerla más segura. Block TEA (que se especificó junto con XTEA ) opera en bloques de tamaño arbitrario en lugar de los bloques de 64 bits del original.

Una tercera versión ( XXTEA ), publicada en 1998, describió 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 ], suma = 0 , i ; /* configuración */ uint32_t delta = 0x9E3779B9 ; /* una constante de programación de claves */ uint32_t k0 = k [ 0 ], k1 = k [ 1 ], k2 = k [ 2 ], k3 = k [ 3 ]; /* clave de caché */ for ( i = 0 ; i < 32 ; i ++ ) { /* inicio de ciclo básico */ suma += delta ; v0 += (( v1 << 4 ) + k0 ) ^ ( v1 + suma ) ^ (( 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 ], suma = 0xC6EF3720 , i ; /* configuración; la suma es (delta << 5) y 0xFFFFFFFF */ uint32_t delta = 0x9E3779B9 ; /* una constante de programación de claves */ 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 ; }                                                             

Tenga en cuenta que la implementación de referencia actúa sobre valores numéricos de varios bytes. El artículo original no especifica cómo derivar los números sobre los que actúa a partir de contenido binario u otro.

Véase también

Notas

  1. ^ Matthew D. Russell (27 de febrero de 2004). «Tinyness: An Overview of TEA and Related Ciphers» (Pequeñez: una descripción general de TEA y cifrados relacionados). Archivado desde el original el 12 de agosto de 2007.
  2. ^ ab Kelsey, John; Schneier, Bruce ; Wagner, David (1997). "Criptoanálisis de claves relacionadas de 3-WAY, Biham-DES, CAST, DES-X, NewDES, RC2 y TEA". Seguridad de la información y las comunicaciones. Apuntes de clase en informática. 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 rápido de software (PDF) . Apuntes de clase en informática. Vol. 7549. págs. 29–48. doi :10.1007/978-3-642-34047-5_3. ISBN 978-3-642-34046-8.
  4. ^ abc Wheeler, David J.; Needham, Roger M. (16 de diciembre de 1994). "TEA, un pequeño algoritmo de cifrado". Cifrado rápido de software. Apuntes de clase sobre informática. 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}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace )
  5. ^ Kelsey, John; Schneier, Bruce ; Wagner, David (1996). "Criptoanálisis de programación de claves de IDEA, G-DES, GOST, SAFER y Triple-DES". Avances en criptología — CRYPTO '96 (PDF) . Apuntes de clase en informática. Vol. 1109. págs. 237–251. doi :10.1007/3-540-68697-5_19. ISBN 978-3-540-61512-5. Archivado desde el original (PDF) el 8 de febrero de 2012 . Consultado el 25 de febrero de 2008 .
  6. ^ Michael Steil. «17 errores que cometió Microsoft en el sistema de seguridad de Xbox». Archivado desde el original el 16 de abril de 2009.

Referencias

Enlaces externos