En criptografia, XTEA (eXtended TEA) és un xifratge de blocs dissenyat per corregir les debilitats en TEA. Els dissenyadors del xifrat van ser David Wheeler i Roger Needham del Cambridge Computer Laboratory, i l'algoritme es va presentar en un informe tècnic inèdit el 1997 (Needham i Wheeler, 1997). No està subjecte a cap patent.
Igual que TEA, XTEA és un xifratge Feistel de blocs de 64 bits amb una clau de 128 bits i 64 rondes suggerides. Són evidents diverses diferències amb TEA, inclosa una programació de claus una mica més complexa i una reordenació dels torns, XOR i addicions.
Implementacions Aquest codi font C estàndard, adaptat del codi de referència llançat al domini públic per David Wheeler i Roger Needham, xifra i desxifra mitjançant XTEA:#include <stdint.h>
/* take 64 bits of data in v and v and 128 bits of key - key */
void encipher(unsigned int num_rounds, uint32_t v, uint32_t const key) { unsigned int i; uint32_t v0=v, v1=v, sum=0, delta=0x9E3779B9; for (i=0; i < num_rounds; i++) { v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]); sum += delta; v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]); } v=v0; v=v1; }
void decipher(unsigned int num_rounds, uint32_t v, uint32_t const key) { unsigned int i; uint32_t v0=v, v1=v, delta=0x9E3779B9, sum=delta*num_rounds; for (i=0; i < num_rounds; i++) { v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + key[(sum>>11) & 3]); sum -= delta; v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + key[sum & 3]); } v=v0; v=v1; }Els canvis respecte al codi font de referència són menors:
El codi font de referència utilitzava el tipus unsigned long en lloc de l' uint32_t net de 64 bits. El codi font de referència no utilitzava tipus const. El codi font de referència va ometre parèntesis redundants, utilitzant la precedència C per escriure la funció rodona com, per exemple, v1 += (v0<<4 ^ v0>>5) + v0 ^ sum + k[sum>>11 & 3] ;
El valor recomanat per al paràmetre "num_rounds" és 32, no 64, ja que cada iteració del bucle fa dues rondes de xifrat Feistel. Per millorar addicionalment la velocitat, el bucle es pot desenrotllar calculant prèviament els valors de suma+clau[].
Cripanàlisi El 2004, Ko et al. va presentar un atac diferencial de clau relacionada a 27 de les 64 rondes de XTEA, que va requerir 2 20,5 textos en pla escollits i una complexitat temporal de 2 115,15.
El 2009, Lu va presentar un atac de rectangle de clau relacionada a 36 rondes de XTEA, trencant més rondes que qualsevol resultat criptoanalític publicat anteriorment per a XTEA. El document presenta dos atacs, un sense i amb una hipòtesi de clau feble, que correspon a 2 64,98 bytes de dades i 2 126,44 operacions, i 2 63,83 bytes de dades i 2 104,33 operacions respectivament.
Referències
Categoria:Xifratges