XXTEA | |
---|---|
Dues rondes Feistel (un cicle) de TEA | |
Detall | |
Estructura | Xarxa del tipus Feistel desbalancejada |
En criptografia, Corrected Block TEA (sovint referit com a XXTEA) és un xifratge de blocs dissenyat per corregir les debilitats del Block TEA original.[1][2]
XXTEA és vulnerable a un atac de text pla escollit que requereix 259 consultes i un treball insignificant. Vegeu la criptoanàlisi a continuació.
Els dissenyadors del xifrat van ser Roger Needham i David Wheeler del Cambridge Computer Laboratory, i l'algoritme es va presentar en un document inèdit d'informe tècnic, l'octubre de 1998 (Wheeler i Needham, 1998). No està subjecte a cap patent.[3]
Parlant formalment, XXTEA és un xifratge de blocs heterogeni UFN (xarxa Feistel desequilibrada) heterogeni i incomplet i consistent. XXTEA opera en blocs de longitud variable que són uns múltiples arbitraris de 32 bits de mida (mínim 64 bits). El nombre de cicles complets depèn de la mida del bloc, però n'hi ha almenys sis (pugen a 32 per a blocs petits). El Block TEA original aplica la funció de rodona XTEA a cada paraula del bloc i la combina de manera additiva amb la seva veïna més a l'esquerra. La velocitat de difusió lenta del procés de desxifrat es va aprofitar immediatament per trencar el xifrat. El bloc corregit TEA utilitza una funció rodona més implicada que fa ús dels dos veïns immediats per processar cada paraula del bloc.
És probable que XXTEA sigui més eficient que XTEA per a missatges més llargs.
Needham & Wheeler fan els següents comentaris sobre l'ús de Block TEA: Per facilitar l'ús i la seguretat general, s'ha de preferir la versió de bloc gran quan sigui aplicable pels motius següents.
Tanmateix, a causa de la naturalesa incompleta de la funció rodona, es poden trobar dos grans textos xifrats de 53 o més paraules de 32 bits idèntiques en totes menys 12 paraules mitjançant una simple cerca de col·lisió de força bruta que requereix 2 96 − N memòria, 2 N temps. i 2 N +2 96 − N textos senzills escollits, és a dir, amb una complexitat total de temps*memòria de 2 96, que en realitat és de 2 paraules*cicles complets/2 per a qualsevol xifrat d'aquest tipus. Actualment es desconeix si aquestes col·lisions parcials representen alguna amenaça per a la seguretat del xifrat. Vuit cicles complets elevarien el llistó per a aquesta recerca de col·lisions per sobre de la complexitat dels atacs paral·lels de força bruta.
La mida inusualment petita de l'algorisme XXTEA el convertiria en una opció viable en situacions en què hi ha limitacions extremes, com ara sistemes de maquinari heretats (potser integrats) on la quantitat de RAM disponible és mínima, o, alternativament, ordinadors d'una sola placa com el Raspberry Pi, Banana Pi o Arduino.
Un atac publicat l'any 2010 per E. Yarrkov presenta un atac de text pla escollit contra XXTEA de ronda completa amb bloc ample, que requereix 259 consultes per a una mida de bloc de 212 bytes o més i un treball insignificant. Es basa en la criptoanàlisi diferencial.[4]
Per xifrar "212 bytes o més" l'algorisme realitza només 6 rondes, i els patrons de bits escollits amb cura permeten detectar i analitzar l'efecte d'allau.
La formulació original de l'algoritme Corrected Block TEA, publicat per David Wheeler i Roger Needham, és la següent: [5][6]
#define DELTA 0x9e3779b9
#define MX ((z>>5^y<<2) + (y>>3^z<<4) ^ (sum^y) + (k[p&3^e]^z))
long btea(long* v, long n, long* k) {
unsigned long z=v[n-1], y=v[0], sum=0, e, DELTA=0x9e3779b9;
long p, q ;
if (n > 1) { /* Coding Part */
q = 6 + 52/n;
while (q-- > 0) {
sum += DELTA;
e = (sum >> 2) & 3;
for (p=0; p<n-1; p++) y = v[p+1], z = v[p] += MX;
y = v[0];
z = v[n-1] += MX;
}
return 0 ;
} else if (n < -1) { /* Decoding Part */
n = -n;
q = 6 + 52/n;
sum = q*DELTA ;
while (sum != 0) {
e = (sum >> 2) & 3;
for (p=n-1; p>0; p--) z = v[p-1], y = v[p] -= MX;
z = v[n-1];
y = v[0] -= MX;
sum -= DELTA;
}
return 0;
}
return 1;
}