TEA (Tiny Encryption Algorithm) an overview
Chan: #cryptorev on irc.azzurranet.org
The Essay
Il TEA (Tiny Encryption Alorithm) e' stato creato da David Wheeler e Roger Needham. Questo algoritmo ha il pregio di essere abbastanza veloce e di offrire una "sicurezza-media". Il Tea si basa principalmente su un'architettura di tipo Feistel Network, perciò la cifratura/decifratura di dati avviene "a blocchi" solitamente di 64 bits, inoltre utilizza un numero abbastanza alto di iterazioni. Come in ogni altro Feistel il numero iterazioni usate è quasi sempre l' esponenziale di 2, ad ogni iterazione viene preso un blocco dati (P) di lunghezza prefissata ed attraverso una chiave (scelta da noi) questo viene criptato, il blocco di testo (C) che si ottiene ha la stessa lunghezza di P. Per abbassare il pericolo di un attacco di crittoanalisi differenziale un buon Feistel network, ad ogni round ha come input l'output precedente. Da questo possiamo facilmente intuire che il nostro algoritmo opera un SOSTITUZIONE, inoltre se invertiamo l' intero algoritmo ed usiamo la STESSA chiave utilizzata per crittare, ed applichiamo in entrata il CipherText, quello che otteniamo è il PlainText, questo comportamento ci porta ad un'altra conclusione, e cioè che il Tea è SISTEMA DI CIFRATURA SIMMETRICA. Vediamo ora un'implementazione (fatta dagli stessi creatori) C del Tea:
Encryption
La cosa più evidente è l'utilizzo di operatori completamente invertibili (XOR, ADD) i quali cioè non comportano una perdita di informazione nell' atto di invertirli. Il perchè dell' uso di questi operatori è abbastanza ovvio, basta pensare che si tratta di un cifrario simmetrico. Il valore 0x9e3779b9 ci permette di riconoscere all'istante il Tea. Possiamo inoltre vedere che grazie all'alternanza di ADD e XOR il sistema acquista una certa nonlinearità, la quale incrementa il livello di sicurezza. L'uso alternato della y e della z, che come possiamo vedere si alternano nel processo di shift (z<<4 , e z >> 5), contribuiscono ad abbassare il valore di convergenza e quindi il pericolo di collisione. Un leggero rallentamento può essere causato dalla tabella di lookup, tabelle molto grandi aumenterebbero di molto i tempi di ritardo.
Decryption Routine
Le differenze rispetto alla routine di encrypt sono poche, come potete ben vedere dal confronto delle due routine, gli shifts non cambiano, ma si passa da somma a SOTTRAZIONE.