Mały algorytm szyfrowania
| Mały algorytm szyfrowania | |
|---|---|
| Dwa kroki funkcji Feistela (1 cykl) w TEA | |
| Ogólny | |
| Projektanci | Roger Needham , David Wheeler |
| Pierwsza publikacja | 1994 |
| Następcy | XTEA , XXTEA |
| Detale | |
| Rozmiar klucza | 128 bitów |
| Rozmiar bloku | 64 bity |
| Struktura | Sieć Feistela |
| Liczba przejazdów | zmienne: rekomendowanie 64 kroków funkcji Feistela (32 cykle) |
| Lepsza kryptoanaliza | |
| TEA cierpi na równoważny problem z kluczami (Kelsey et al., 1996 ) i może zostać zhakowany przy użyciu ataku związanego z kluczem przy użyciu 2 23 wybranego tekstu jawnego i czasu 2 32 . | |
W kryptografii Tiny Encryption Algorithm (TEA) to szyfr blokowy znany z prostoty i łatwości implementacji (zwykle wystarczy kilka linijek kodu). Został on opracowany przez Davida Wheelera i Rogera Needhama z wydziału komputerowego Uniwersytetu Cambridge [1] i zaprezentowany po raz pierwszy w 1994 roku podczas drugiego Fast Software Encryption , które odbyło się w Leuven ( Belgia ) [2] .
Algorytm nie jest chroniony patentem .
Właściwości
TEA działa na blokach 64 - bitowych i używa 128-bitowego klucza kryptograficznego . Ma strukturę sieci Feistel z 64 krokami (sugerowane), zwykle realizowanymi w parach zwanych pętlami . Ma bardzo prostą funkcję zarządzania kluczami , która miesza wszystkie swoje bity w ten sam sposób w każdym cyklu. Ponadto stosuje się wielokrotności stałej, aby algorytm był odporny na prostsze ataki oparte na symetrii kroków. Ta stała , 2654435769 ( ) jest wybrana jako złoty podział .
TEA ma pewne słabości, z których najpoważniejsza związana jest z równoważnymi kluczami : każdy klucz jest równoważny trzem innym, co oznacza, że efektywna długość klucza wynosi tylko 126 bitów [3] . W konsekwencji TEA w żadnym wypadku nie jest określana jako kryptograficzna funkcja skrótu . Ta słabość została wykorzystana do zhakowania konsoli Microsoft Xbox , gdzie szyfr był używany jako funkcja skrótu do kontrolowania oprogramowania rozruchowego [4] . TEA jest również podatny na atak związany z kluczem , który wymaga 2 23 tekstów jawnych wybranych za pomocą pary skorelowanych kluczy i czasu 2 32 [5] .
Nietypowy minimalny rozmiar TEA czyni go interesującym wyborem w wielu sytuacjach, w których występują ekstremalne ograniczenia związane z zasobami, na przykład w starych systemach sprzętowych, gdzie ilość pamięci jest często minimalna. Z drugiej strony udowodniona niepewność algorytmu sugeruje wykorzystanie jednego z przedstawionych wariantów do skorygowania słabości jego struktury.
Wersje
Po pierwszej publicznej wersji TEA pojawiła się druga wersja o nazwie XTEA , eXtended TEA , która zawierała pewne modyfikacje mające na celu zwiększenie bezpieczeństwa algorytmu: w przeciwieństwie do oryginalnego algorytmu integruje bardziej złożoną funkcję zarządzania kluczami i inną kolejność bitów operacje przesunięcia , XOR i dodawania. Wraz z XTEA została również zaprezentowana Block TEA , identyczna jak XTEA, ale która iteruje po całej wiadomości, uznając ją za pojedynczy blok.
Trzecia wersja, nazwana Corrected Block TEA (znana jako XXTEA ), została opublikowana w 1998 roku: wywodzi się z XTEA, ale różni się możliwością wykorzystania bloków danych o dowolnej długości.
Kod referencyjny
Poniżej przedstawiono adaptacje C procedur szyfrowania i deszyfrowania TEA , udostępnione do domeny publicznej przez Davida Wheelera i Rogera Needhama:
#include <stdint.h>
nieważne szyfrowanie ( uint32_t * v , uint32_t * k ) {
uint32_t v0 = v [ 0 ], v1 = v [ 1 ], suma = 0 , ja ; / * organizować coś * /
delta uint32_t = 0x9e3779b9 ; / * kluczowa stała harmonogramu * /
uint32_t 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 cyklu * /
v [ 0 ] = v0 ; v [ 1 ] = v1 ;
}
nieważne odszyfrowanie ( uint32_t * v , uint32_t * k ) {
uint32_t v0 = v [ 0 ], v1 = v [ 1 ], suma = 0xC6EF3720 , ja ; / * konfiguracja; suma == delta * 32 * /
delta uint32_t = 0x9e3779b9 ; / * kluczowa stała harmonogramu * /
uint32_t 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 cyklu * /
v [ 0 ] = v0 ; v [ 1 ] = v1 ;
}
Należy zauważyć, że standardowa implementacja jest powiązana z konkretną architekturą mikroprocesora , co oznacza, że uwzględnienie kolejności bajtów jest ważne, gdy zaszyfrowany tekst jest dystrybuowany i przetwarzany w różnych systemach. Oryginalny dokument nie określa żadnych szczegółów dotyczących architektury mikroprocesorów, więc każdy, kto wdraża system wykorzystujący TEA, jest zobowiązany do samodzielnego rozważenia tych szczegółów.
Notatki
- ^ Oficjalna strona Laboratorium Komputerowego Uniwersytetu Cambridge
- ^ TEA, mały algorytm szyfrowania
- ^ Bruce Schneier i David Wagner: Key-schedule kryptoanaliza IDEA, G-DES, GOST, SAFER i Triple-DES ( 1996 )
- ^ 17 błędów Microsoft popełnionych w systemie zabezpieczeń konsoli Xbox zarchiwizowanych 16 kwietnia 2009 r. w Internet Archive .
- ^ Bruce Schneier i David Wagner: Analiza kryptograficzna powiązanych kluczy 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 i TEA ( 1997 )
Powiązane pozycje
- RC4 – szyfr strumieniowy, który podobnie jak TEA jest bardzo prosty w implementacji.
- XTEA - The Block TEA, pierwsza zmodyfikowana wersja TEA.
- XXTEA - The Corrected Block TEA, druga zmodyfikowana wersja TEA.
Inne odniesienia
Linki zewnętrzne
- Kryptoanaliza algorytmu Tiny Encryption Algorithm ( PDF ) na stronie cs.ua.edu .
- Pojęcia dotyczące TEA i implementacji w różnych językach , na 143.53.36.235:8080 . Pobrano 14 października 2008 r. (Zarchiwizowane z oryginału 12 czerwca 2017 r.) .
- Wektory testowe dla TEA ,na cix.co.uk.
- Implementacja XTEA w PHP pod adresem php-einfach.de .
- Implementacja JavaScript TEA , pod adresem movable-type.co.uk .