XXTEA
Corrected Block TEA (XXTEA) | |
---|---|
![]() | |
Generale | |
Progettisti | Roger Needham, David Wheeler |
Prima pubblicazione | 1998 |
Derivato da | Block TEA |
Dettagli | |
Dimensione chiave | 128 bit |
Dimensione blocco | arbitraria, ma non meno di 64 bit |
Struttura | Rete di Feistel non bilanciata |
Numero di passaggi | dipendono dalla dimensione del blocco (da 6 a 32 cicli interi) |
Modifica dati su Wikidata · Manuale |
In crittografia il Corrected Block TEA (spesso abbreviato in XXTEA) è un cifrario a blocchi sviluppato per correggere le vulnerabilità riscontrate nel disegno del Block TEA, un algoritmo di cifratura erede del Tiny Encryption Algorithm che fu pubblicato per la prima volta insieme all'XTEA nel 1997.[1]
L'algoritmo è stato presentato nel 1998 da David Wheeler e Roger Needham, del dipartimento informatico dell'Università di Cambridge.[2] Non è soggetto ad alcun brevetto.
Struttura
L'XXTEA, tecnicamente parlando, è un cifrario a blocchi basato su una rete di Feistel non bilanciata, dove le due metà in cui è diviso il blocco di dati su cui opera la funzione non sono delle stesse dimensioni. L'XXTEA lavora, infatti, su blocchi di dimensione variabile la cui lunghezza è minimo 64 bit e multipla di 32 bit. Il numero dei cicli completi dipende dalla dimensione del blocco, ma devono comunque essere compresi fra un minimo di 6 ed un massimo di 32 (quando si utilizzano blocchi di piccole dimensioni).
Il Block TEA, da cui deriva, applicava la funzione interna dell'XTEA ad ogni word del blocco, combinandola con la sua vicina del flusso di sinistra. Questo modo di operare comportava una bassa diffusione, una delle proprietà che un buon cifrario deve possedere: questa vulnerabilità fu subito utilizzata per proporre un metodo per violare il Block TEA.[3]
Il Corrected Block TEA utilizza una funzione interna più curata che fa uso, per la processazione delle word del blocco, di entrambe quelle adiacenti.
Se la dimensione del blocco è identica alla dimensione del messaggio, l'XXTEA ha la proprietà di non richiedere l'impostazione di una modalità di funzionamento: l'algoritmo può essere applicato direttamente all'intero messaggio.
L'XXTEA risulta più efficiente dell'XTEA per operare su messaggi molto lunghi.
Codice di riferimento
Ecco una implementazione dell'XXTEA in linguaggio C, basata sull'originale pubblicata da David Wheeler e Roger Needham:[4]
/* #define MX (z>>5^y<<2) + (y>>3^z<<4)^(sum^y) + (key[p&3^e]^z) */ #define MX ( (((z>>5)^(y<<2))+((y>>3)^(z<<4)))^((sum^y)+(key[(p&3)^e]^z)) ) long btea(long* v, long length, long* key) { unsigned long z /* = v[length-1] */, y=v[0], sum=0, e, DELTA=0x9e3779b9; long p, q ; if (length > 1) { /* Coding Part */ z=v[length-1]; /* Moved z=v[length-1] to here, else segmentation fault in decode when length < 0 */ q = 6 + 52/length; while (q-- > 0) { sum += DELTA; e = (sum >> 2) & 3; for (p=0; p<length-1; p++) y = v[p+1], z = v[p] += MX; y = v[0]; z = v[length-1] += MX; } return 0 ; } else if (length < -1) { /* Decoding Part */ length = -length; q = 6 + 52/length; sum = q*DELTA ; while (sum != 0) { e = (sum >> 2) & 3; for (p=length-1; p>0; p--) z = v[p-1], y = v[p] -= MX; z = v[length-1]; y = v[0] -= MX; sum -= DELTA; } return 0; } return 1; }
Note
- ^ Tinyness: An Overview of TEA and Related Ciphers (Matthew D. Russell)
- ^ Sito ufficiale del Computer Laboratory of Cambridge University
- ^ Youngdai Ko, Seokhie Hong, Wonil Lee, Sangjin Lee e Jongin Lim. "Related-key attack|Related key differential attacks on 26 rounds of XTEA and full rounds of GOST." In Proceedings of FSE '04 - Lecture Notes in Computer Science, 2004 (Springer Science+Business Media|Springer-Verlag)
- ^ Implementazione in C dell'XXTEA
Voci correlate
- RC4: un cifrario a flusso che, come l'XXTEA, è di facile implementazione
- XTEA: l'XTEA, il precursore dell'XXTEA
- Tiny Encryption Algorithm: il TEA, precursore dell'XTEA
V · D · M | |
---|---|
Cifrari principali | AES · Blowfish · DES · IDEA · Serpent · Triple DES · TEA · Twofish |
Altri cifrari | 3-Way · ABC · Akelarre · Anubis · ARIA · BaseKing · BassOmatic · BATON · BEAR · C2 · Camellia · CAST-128 · CAST-256 · CIKS-1 · CIPHERUNICORN-A · CIPHERUNICORN-E · CLEFIA · CMEA · Cobra · COCONUT98 · Crab · CRYPTON · CS-Cipher · DEAL · DES-X · FEAL · GDES · GOST · IDEA NXT · Iraqi · Kalyna · KASUMI · Khafre · KHAZAD · Khufu · LION · LOKI89/91 · LOKI97 · Lucifer · MacGuffin · MAGENTA · MARS · MISTY1 · MMB · RC2 · RC5 · RC6 · Red Pike · S-1 · SAFER · SEED · SHARK · Skipjack · Square · XTEA · XXTEA |
Strutture | Cifrario del prodotto · Gestore della chiave · Rete a sostituzione e permutazione · Rete di Feistel · S-Box |
Varie | Dimensione del blocco · Dimensione della chiave · Key whitening · Modalità di funzionamento dei cifrari a blocchi · Vettore di inizializzazione |
Portale Crittografia · Progetto Crittografia · Cifrari a blocchi |
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/34/Ambox_padlock_green.svg/25px-Ambox_padlock_green.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a0/Gnome-system-lock-screen.svg/25px-Gnome-system-lock-screen.svg.png)