Mały algorytm szyfrowania
W kryptografii Tiny Encryption Algorithm ( TEA) jest algorytmem szyfrów blokowych wyróżniającym się prostotą opisu i implementacji (zwykle kilka linijek kodu). Został zaprojektowany przez Davida Wheelera i Rogera Needhama z Cambridge Computer Laboratory i został po raz pierwszy zaprezentowany w 1994 roku na warsztatach Fast Software Encryption Workshop (Wheeler i Needham, 1994). Nie podlega żadnemu patentowi .
Właściwości
TEA działa na blokach 64-bitowych i używa klucza 128-bitowego . Zawiera zalecaną strukturę sieci Feistel w 64 rundach, zwykle realizowanych w parach zwanych cyklami . Ma niezwykle proste generowanie kluczy, tasując wszystkie kluczowe treści w ten sam sposób dla każdego cyklu. Różne wielokrotności magicznej stałej służą do zapobiegania atakom w oparciu o symetrię rund.
TEA ma pewne słabości. Najbardziej godne uwagi jest to, że cierpi na równoważne klucze : każdy klucz jest równoważny trzem innym, a to oznacza, że efektywna długość klucza wynosi tylko 126 bitów (Kelsey et. al., 1996). Ta słabość dała początek metodzie złamania konsoli Xbox Microsoftu , gdzie algorytm został wykorzystany jako funkcja skrótu . TEA jest również podatna na ataki powiązanych kluczy, które wymagają 2 23 wybranych tekstów jawnych dla pary powiązanych kluczy, o złożoności chronologicznej 2 32 (Kelsey i in., 1997).
Ze względu na te słabości zaprojektowano kilka wersji TEA, w tym XTEA .
Kod referencyjny
Poniżej znajduje się adaptacja procedur szyfrowania i deszyfrowania, opublikowana w domenie publicznej przez Davida Wheelera i Rogera Needhama:
void encrypt(unsigned long* v, unsigned long* k) {
unsigned long v0=v[0], v1=v[1], sum=0, i; /* ustaw */
unsigned long delta=0x9e3779b9; /* kluczowa stała harmonogramu */
unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* klucz pamięci podręcznej */
for (i=0; i < 32; i++) { /* początek cyklu podstawowego */
suma += delta;
v0 += (v1<<4)+k0 ^ v1+suma ^ (v1>>5)+k1;
v1 += (v0<<4)+k2 ^ v0+suma ^ (v0>>5)+k3; /* koniec pętli */
}
v[0]=v0; v[1]=v1;
}
void decrypt(unsigned long* v, unsigned long* k) {
unsigned long v0=v[0], v1=v[1], suma=0xC6EF3720, i; /* ustaw */
unsigned long delta=0x9e3779b9; /* kluczowa stała harmonogramu */
unsigned long k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* klucz pamięci podręcznej */
for(i=0; i<32; i++) { /* początek cyklu podstawowego */
v1 -= (v0 << 4)+k2 ^ v0+suma ^ (v0 >> 5)+k3;
v0 -= (v1 << 4)+k0 ^ v1+suma ^ (v1 >> 5)+k1;
suma -= delta; /* koniec pętli */
}
v[0]=v0; v[1]=v1;
}
Referencje
- David J. Wheeler i Roger M. Needham. TEA, mały algorytm szyfrowania. W Bart Preneel, redaktor Fast Software Encryption: Second International Workshop, tom 1008 Lecture Notes in Computer Science , strony 363-366, Leuven, Belgia, 14-16 grudnia 1994.
- John Kelsey , Bruce Schneier i David Wagner . Analiza kryptograficzna według harmonogramu kluczy IDEA, G-DES, GOST, SAFER i Triple-DES. Notatki z wykładu z informatyki, 1109: 237-251, 1996.
- John Kelsey, Bruce Schneier i David Wagner. Analiza kryptowalut powiązanych kluczy 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 i TEA. Notatki z wykładu z informatyki, 1334: s.233-246, 1997.
- Julio César Hernández, Pedro Isasi i Arturo Ribagorda. Zastosowanie algorytmów genetycznych do kryptoanalizy jednej rundy TEA. Materiały z Sympozjum 2002 na temat Sztucznej Inteligencji i jej Zastosowania, 2002.
- Julio César Hernández, José María Sierra, Pedro Isasi i Arturo Ribargorda. Znalezienie wydajnych rozróżniaczy dla mapowań kryptograficznych, z zastosowaniem szyfru blokowego TEA. W Proceedings of the Congress on Evolutionary Computing 2003, 2003.
- Julio César Hernández, José María Sierra, Arturo Ribagorda, Benjamin Ramos i JC Mex-Perera. Odróżnianie TEA od losowej permutacji: Zmniejszone okrągłe wersje TEA nie mają SAC lub nie generują liczb losowych. W Proceedings of the IMA Int. Conf. on Cryptography and Coding 2001, s. 374-377, 2001.
- Dukjae Moon, Kyungdeok Hwang, Wonil Lee, Sangjin Lee i Jongin Lim. Niemożliwa różnicowa kryptoanaliza zredukowanych okrągłych XTEA i TEA. Wykład Notatki z Informatyki, 2365: 49-60, 2002. ISSN 0302-9743.
- Seokhie Hong, Deukjo Hong, Youngdai Ko, Donghoon Chang, Wonil Lee i Sangjin Lee. Kryptoanaliza różnicowa TEA i XTEA. W postępowaniu ICISC 2003, 2003b.
Linki zewnętrzne
- Kryptanaliza algorytmu Tiny Encryption
- Strona internetowa promująca TEA i zapewniająca różnorodne wdrożenia
- Wektory testowe dla TEA
- Przegląd TEA i XTEA oraz ich kryptoanaliza
- Implementacja JavaScript XXTEA z Base64
- Implementacja JavaScript TEA
- Implementacje JavaScript i PHP XTEA (tekst w języku angielskim)
- Implementacja JavaScript i PHP XXTEA