Lille krypteringsalgoritme
I kryptografi er Tiny Encryption Algorithm ( TEA) en algoritme til blokchiffere , der er bemærkelsesværdig for dens enkelhed i beskrivelse og implementering (normalt et par linjer kode). Det blev designet af David Wheeler og Roger Needham fra Cambridge Computer Laboratory og blev første gang præsenteret i 1994 på Fast Software Encryption Workshop (Wheeler og Needham, 1994). Det er ikke underlagt nogen form for patent .
Egenskaber
TEA fungerer på 64-bit blokke og bruger en 128-bit nøgle . Den indeholder en anbefalet Feistel-netværksstruktur i 64 runder, normalt implementeret i par kaldet cyklusser . Den har en ekstrem enkel nøglegenerering, der blander alt nøgleindhold på samme måde for hver cyklus. Forskellige multipla af en magisk konstant bruges til at forhindre angreb baseret på rundernes symmetri .
TEA har nogle svagheder. Det mest bemærkelsesværdige er, at det lider af ækvivalente nøgler : hver nøgle svarer til tre andre, og dette indebærer, at den effektive nøglelængde kun er 126 bit (Kelsey et. al., 1996). Denne svaghed gav anledning til en metode til at knække Microsofts Xbox -konsol , hvor algoritmen blev brugt som en hash - funktion . TEA er også modtagelig for relaterede nøgleangreb, der kræver 2 23 udvalgte klartekster for et par relaterede nøgler, med en kronologisk kompleksitet på 2 32 (Kelsey et. al., 1997).
På grund af disse svagheder er der designet nogle revisioner af TEA, herunder XTEA .
Referencekode
Nedenfor er en tilpasning af krypterings- og dekrypteringsrutinerne, offentliggjort i det offentlige domæne af David Wheeler og Roger Needham:
void encrypt(usigned long* v, unsigned long* k) {
lang uden fortegn v0=v[0], v1=v[1], sum=0, i; /* set up */
unsigned long delta=0x9e3779b9; /* en nøgleskemakonstant */
lang uden fortegn k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache-tast */
for (i=0; i < 32; i++) { /* grundlæggende cyklus start */
sum += delta;
v0 += (v1<<4)+k0 ^ v1+sum ^ (v1>>5)+k1;
v1 += (v0<<4)+k2 ^ v0+sum ^ (v0>>5)+k3; /* endeløkke */
}
v[0]=v0; v[1]=v1;
}
void decrypt(usigned long* v, unsigned long* k) {
usigneret lang v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* set up */
unsigned long delta=0x9e3779b9; /* en nøgleskemakonstant */
lang uden fortegn k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* cache-tast */
for(i=0; i<32; i++) { /* grundcyklusstart */
v1 -= (v0 << 4)+k2 ^ v0+sum ^ (v0 >> 5)+k3;
v0 -= (v1 << 4)+k0 ^ v1+sum ^ (v1 >> 5)+k1;
sum -= delta; /* endeløkke */
}
v[0]=v0; v[1]=v1;
}
Referencer
- David J. Wheeler og Roger M. Needham. TEA, en lille krypteringsalgoritme. I Bart Preneel, redaktør, Fast Software Encryption: Second International Workshop, bind 1008 af Lecture Notes in Computer Science , side 363-366, Leuven, Belgien, 14.-16. december 1994.
- John Kelsey , Bruce Schneier og David Wagner . Nøgleskema-krypteringsanalyse af IDEA, G-DES, GOST, SAFER og Triple-DES. Lecture Notes in Computer Science, 1109: 237-251, 1996.
- John Kelsey, Bruce Schneier og David Wagner. Relateret nøglekrypteringsanalyse af 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 og TEA. Lecture Notes in Computer Science, 1334: pp233-246, 1997.
- Julio César Hernández, Pedro Isasi og Arturo Ribagorda. En anvendelse af genetiske algoritmer til kryptoanalyse af en runde TEA. Proceedings of the 2002 Symposium on Artificial Intelligence and its application, 2002.
- Julio César Hernández, José María Sierra, Pedro Isasi og Arturo Ribargorda. At finde effektive skelnen til kryptografiske kortlægninger med en applikation til blokchifferet TEA. I Proceedings of the 2003 Congress on Evolutionary Computation, 2003.
- Julio César Hernández, José María Sierra, Arturo Ribagorda, Benjamin Ramos og JC Mex-Perera. At skelne TEA fra en tilfældig permutation: Reducerede runde versioner af TEA har ikke SAC eller genererer ikke tilfældige tal. I Proceedings of the IMA Int. Conf. on Cryptography and Coding 2001, side 374-377, 2001.
- Dukjae Moon, Kyungdeok Hwang, Wonil Lee, Sangjin Lee og Jongin Lim. Umulig differentiel kryptoanalyse af reduceret rund XTEA og TEA. Lecture Notes in Computer Science, 2365: 49-60, 2002. ISSN 0302-9743.
- Seokhie Hong, Deukjo Hong, Youngdai Ko, Donghoon Chang, Wonil Lee og Sangjin Lee. Differentiel kryptoanalyse af TEA og XTEA. I Proceedings of ICISC 2003, 2003b.
Eksterne links
- En krypteringsanalyse af den lille krypteringsalgoritme
- En webside, der går ind for TEA og tilbyder en række implementeringer
- Test vektorer for TEA
- En undersøgelse af TEA og XTEA og deres kryptoanalyse
- JavaScript implementering af XXTEA med Base64
- JavaScript implementering af TEA
- JavaScript og PHP implementeringer af XTEA (engelsk tekst)
- JavaScript og PHP implementering af XXTEA