XTEA

Da Wikipedia, l'enciclopedia libera.
Extended TEA (XTEA)
XTEA InfoBox Diagram.png
Due passaggi della funzione Feistel (1 ciclo) nell'XTEA
Generale
Progettisti Roger Needham, David Wheeler
Prima pubblicazione 1997
Derivato da TEA
Successori XXTEA
Dettagli
Dimensione chiave 128 bits
Dimensione blocco 64 bits
Struttura Rete di Feistel
Numero di passaggi variabili: raccomandati 64 passaggi della funzione Feistel (32 cicli)
Migliore crittanalisi
Nel 2004 è stato dimostrato che un attacco di crittanalisi differenziale correlato alla chiave può violare 26 dei 64 passaggi dell'XTEA con 220,5 testi in chiaro scelti ed un tempo di 2115,15.

In crittografia l'XTEA (eXtended TEA) è un cifrario a blocchi che fu presentato nel 1997 da David Wheeler e Roger Needham, del dipartimento informatico dell'Università di Cambridge,[1] per correggere le vulnerabilità scoperte nel loro algoritmo TEA. L'XTEA non è soggetto ad alcun brevetto.

La semplicità della sua struttura e la compattezza del codice rendono l'XTEA un'interessante scelta in molte situazioni dove si hanno vincoli estremi legati alle risorse, ad esempio nei vecchi sistemi hardware dove la quantità di memoria è spesso minima.

Struttura[modifica | modifica sorgente]

Anche l'XTEA, come il TEA, è strutturato sulla funzione nota come rete di Feistel ed opera su blocchi di dati di 64 bit, chiavi di cifratura di 128 bit ed un numero consigliato di 64 passaggi. Le differenze più appariscenti rispetto al TEA sono un algoritmo di gestione della chiave più complesso ed un diverso ordine delle operazioni di XOR, addizione e spostamento dei bit.

Block TEA[modifica | modifica sorgente]

Insieme all'XTEA, gli autori presentarono anche un'ulteriore variante dell'algoritmo originale denominata Block TEA, che utilizzava la stessa funzione interna dell'XTEA ma applicata ciclicamente sull'intero messaggio per diverse iterazioni. Dato che opera sull'intero messaggio, il BLock TEA ha la proprietà di non richiedere una modalità di funzionamento.

Nel 1998 Saarinen mostrò un attacco portato al Block TEA nella sua interezza, attacco che scovò anche una vulnerabilità nel successore del Block TEA, l'XXTEA.

Sicurezza[modifica | modifica sorgente]

Il miglior attacco all'XTEA è stato descritto da Youngdai Ko ed altri autori che nel 2004 hanno mostrato come utilizzare la crittanalisi differenziale correlata alla chiave per violare 26 dei 64 passaggi dell'XTEA, attacco che richiede 220,5 testi in chiaro scelti ed un tempo di 2115,15.

Implementazioni[modifica | modifica sorgente]

Quelle che seguono sono le funzioni di cifratura e decifratura dell'XTEA, rilasciate nel pubblico dominio dagli autori, scritte in linguaggio C:

void encipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) {
    unsigned long v0=v[0], v1=v[1], i;
    unsigned long sum=0, delta=0x9E3779B9;
    for(i=0; i<num_rounds; i++) {
       v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
        sum += delta;
        v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
    }
    v[0]=v0; v[1]=v1;
}
 
void decipher(unsigned int num_rounds, unsigned long* v, unsigned long* k) {
    unsigned long v0=v[0], v1=v[1], i;
    unsigned long delta=0x9E3779B9, sum=delta*num_rounds;
    for(i=0; i<num_rounds; i++) {
        v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + k[(sum>>11) & 3]);
        sum -= delta;
        v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + k[sum & 3]);
    }
    v[0]=v0; v[1]=v1;
}

Il codice non è adatto per sistemi a 64 bit: su di essi opererà incorrettamente utilizzando blocchi da 128 bit a causa degli interi senza segno lunghi 64 bit invece di 32. Per trasportare il codice, deve essere modificato per l'uso di tipi che garantiscano i 32 bit, come uint32_t della libreria stdint.h. In Java, va usato il tipo di dati 'int' e l'operatore >>> al posto di >>.

Il valore raccomandato per il parametro "num_rounds" è 32 e non 64, dato che per ogni iterazione il cicle esegue 2 passaggi della rete di Feistel. Per incrementare la velocità si possono precalcolare i valori di sum+k[].

Note[modifica | modifica sorgente]

  1. ^ Sito ufficiale del Computer Laboratory of Cambridge University

Bibliografia[modifica | modifica sorgente]

  • 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)
  • Seokhie Hong, Deukjo Hong, Youngdai Ko, Donghoon Chang, Wonil Lee e Sangjin Lee. "Differential cryptanalysis of TEA and XTEA." - Proceedings of ICISC 2003 (2003b)
  • Dukjae Moon, Kyungdeok Hwang, Wonil Lee, Sangjin Lee e Jongin Lim. "Impossible differential cryptanalysis of reduced round XTEA and TEA." - Lecture Notes in Computer Science, 2365: 49-60, 2002. ISSN 0302-9743.
  • Roger M. Needham and David J. Wheeler. "Tea extensions." Technical report, Computer Laboratory, University of Cambridge (1997) (PDF).

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]