Vés al contingut

Algoritme de xifratge petit

De la Viquipèdia, l'enciclopèdia lliure
TEA
Two Feistel rounds (one cycle) of TEA[1]
Detall
EstructuraXarxa del tipus Feistel
Millor criptoanàlisi pública
TEA suffers from equivalent keys (see text; Kelsey et al., 1996) and can be broken using a related-key attack requiring 223 chosen plaintexts and a time complexity of 232.[2] The best structural cryptanalysis of TEA in the standard single secret key setting is the zero-correlation cryptanalysis breaking 21 rounds in 2121.5 time with less than the full code book [3]

En criptografia, el Tiny Encryption Algorithm (TEA) és un xifratge de blocs que destaca per la seva senzillesa de descripció i implementació, normalment unes poques línies de codi. Va ser dissenyat per David Wheeler i Roger Needham del Cambridge Computer Laboratory ; es va presentar per primera vegada al taller Fast Software Encryption a Lovaina l'any 1994 i es va publicar per primera vegada a les actes d'aquest taller.[4]

El xifrat no està subjecte a cap patent.

Propietats

[modifica]

TEA funciona amb dos nombres enters sense signe de 32 bits (podria derivar-se d'un bloc de dades de 64 bits) i utilitza una clau de 128 bits. Té una estructura Feistel amb 64 rondes suggerides, normalment implementades en parelles denominades cicles. Té una programació de claus extremadament senzilla, barrejant tot el material clau de la mateixa manera per a cada cicle. S'utilitzen diferents múltiples d'una constant màgica per evitar atacs simples basats en la simetria de les rondes. La constant màgica, 2654435769 o 0x9E3779B9 (232).

TEA té algunes debilitats. El més notable és que pateix claus equivalents: cada clau és equivalent a tres altres, el que significa que la mida efectiva de la clau és només de 126 bits.[5] Com a resultat, TEA és especialment dolent com a funció hash criptogràfica. Aquesta debilitat va portar a un mètode per piratejar la consola de jocs Xbox de Microsoft, on el xifrat s'utilitzava com a funció hash.[6] El TEA també és susceptible a un atac de clau relacionada que requereix 223 textos en pla escollits sota un parell de claus relacionades, amb una complexitat temporal de 232.[2] A causa d'aquestes debilitats, es va dissenyar el xifratge XTEA.

Codi de referència

[modifica]

A continuació es mostra una adaptació de les rutines de xifrat i desxifrat de referència en C, publicades al domini públic per David Wheeler i Roger Needham: [7]

#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;           /* set up */
    uint32_t delta=0x9E3779B9;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
        sum += delta;
        v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
    }                                              /* end cycle */
    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;  /* set up; sum is (delta << 5) & 0xFFFFFFFF */
    uint32_t delta=0x9E3779B9;                     /* a key schedule constant */
    uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3];   /* cache key */
    for (i=0; i<32; i++) {                         /* basic cycle start */
        v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3);
        v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1);
        sum -= delta;
    }                                              /* end cycle */
    v[0]=v0; v[1]=v1;
}

Referències

[modifica]
  1. Matthew D. Russell. «Tinyness: An Overview of TEA and Related Ciphers», 27-02-2004. Arxivat de l'original el 12 August 2007.
  2. 2,0 2,1 Kelsey, John. «Related-key cryptanalysis of 3-WAY, Biham-DES,CAST, DES-X, NewDES, RC2, and TEA». A: Information and Communications Security (en anglès). 1334, 1997, p. 233–246 (Lecture Notes in Computer Science). DOI 10.1007/BFb0028479. ISBN 978-3-540-63696-0. 
  3. Bogdanov, Andrey. «Zero Correlation Linear Cryptanalysis with Reduced Data Complexity». A: Fast Software Encryption. 7549, 2012, p. 29–48 (Lecture Notes in Computer Science). DOI 10.1007/978-3-642-34047-5_3. ISBN 978-3-642-34046-8. 
  4. Wheeler, David J. «TEA, a tiny encryption algorithm». A: Fast Software Encryption (en anglès). 1008, 1994-12-16, p. 363–366 (Lecture Notes in Computer Science). DOI 10.1007/3-540-60590-8_29. ISBN 978-3-540-60590-4. 
  5. Kelsey, John. «Key-Schedule Cryptanalysis of IDEA, G-DES, GOST, SAFER, and Triple-DES». A: Advances in Cryptology — CRYPTO '96 (en anglès). 1109, 1996, p. 237–251 (Lecture Notes in Computer Science). DOI 10.1007/3-540-68697-5_19. ISBN 978-3-540-61512-5. 
  6. Michael Steil. «17 Mistakes Microsoft Made in the Xbox Security System» (en anglès). Arxivat de l'original el 16 April 2009.
  7. Wheeler, David J. «TEA, a tiny encryption algorithm». A: Fast Software Encryption (en anglès). 1008, 1994-12-16, p. 363–366 (Lecture Notes in Computer Science). DOI 10.1007/3-540-60590-8_29. ISBN 978-3-540-60590-4.