Malý šifrovací algoritmus
V kryptografii je Tiny Encryption Algorithm ( TEA) algoritmus pro blokové šifry , který se vyznačuje jednoduchostí popisu a implementace (obvykle několik řádků kódu). Navrhli jej David Wheeler a Roger Needham z Cambridge Computer Laboratory a poprvé byl představen v roce 1994 na Fast Software Encryption Workshop (Wheeler a Needham, 1994). Nepodléhá žádnému typu patentu .
Vlastnosti
TEA pracuje na 64bitových blocích a používá 128bitový klíč . Obsahuje doporučenou strukturu sítě Feistel v 64 kolech, obvykle implementovaných ve dvojicích nazývaných cykly . Má extrémně jednoduché generování klíčů a pro každý cyklus zamíchá veškerý obsah klíče stejným způsobem. Různé násobky magické konstanty se používají k zamezení útoků na základě symetrie kol.
TEA má některé slabiny. Nejpozoruhodnější je, že trpí ekvivalentními klíči : každý klíč je ekvivalentní třem dalším, což znamená, že efektivní délka klíče je pouze 126 bitů (Kelsey et. al., 1996). Tato slabina dala vzniknout metodě prolomení konzole Xbox společnosti Microsoft , kde byl algoritmus použit jako hashovací funkce . TEA je také náchylná k útokům souvisejících klíčů, které vyžadují 2 23 vybraných otevřených textů pro pár souvisejících klíčů s chronologickou složitostí 2 32 (Kelsey et. al., 1997).
Kvůli těmto nedostatkům byly navrženy některé revize TEA, včetně XTEA .
Referenční kód
Níže je uvedena adaptace šifrovacích a dešifrovacích rutin, publikovaných ve veřejné doméně Davidem Wheelerem a Rogerem Needhamem:
void encrypt(unsigned long* v, unsigned long* k) {
dlouhé bez znaménka v0=v[0], v1=v[1], součet=0, i; /* nastavení */
unsigned long delta=0x9e3779b9; /* rozvrhová konstanta klíče */
dlouhé bez znaménka k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* klíč mezipaměti */
for (i=0; i < 32; i++) { /* začátek základního cyklu */
součet += delta;
v0 += (v1<<4)+k0 ^ v1+součet ^ (v1>>5)+k1;
v1 += (v0<<4)+k2 ^ v0+součet ^ (v0>>5)+k3; /* konec smyčky */
}
v[0]=v0; v[1]=v1;
}
void decrypt(unsigned long* v, unsigned long* k) {
unsigned long v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* nastavení */
unsigned long delta=0x9e3779b9; /* rozvrhová konstanta klíče */
dlouhé bez znaménka k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* klíč mezipaměti */
for(i=0; i<32; i++) { /* začátek základního cyklu */
v1 -= (v0 << 4)+k2 ^ v0+součet ^ (v0 >> 5)+k3;
v0 -= (v1 << 4)+k0 ^ v1+součet ^ (v1 >> 5)+k1;
součet -= delta; /* konec smyčky */
}
v[0]=v0; v[1]=v1;
}
Reference
- David J. Wheeler a Roger M. Needham. TEA, malý šifrovací algoritmus. V Bart Preneel, editor, Fast Software Encryption: Second International Workshop, svazek 1008 Lecture Notes in Computer Science , strany 363–366, Leuven, Belgie, 14.–16. prosince 1994.
- John Kelsey , Bruce Schneier a David Wagner . Klíč-plánová kryptoanalýza IDEA, G-DES, GOST, SAFER a Triple-DES. Lecture Notes in Computer Science, 1109: 237–251, 1996.
- John Kelsey, Bruce Schneier a David Wagner. Šifrování souvisejících klíčů 3-WAY, Biham-DES, CAST, DES-X NewDES, RC2 a TEA. Lecture Notes in Computer Science, 1334: pp233–246, 1997.
- Julio César Hernández, Pedro Isasi a Arturo Ribagorda. Aplikace genetických algoritmů na kryptoanalýzu jednokolového TEA. Sborník příspěvků ze sympozia 2002 o umělé inteligenci a její aplikaci, 2002.
- Julio César Hernández, José María Sierra, Pedro Isasi a Arturo Ribargorda. Nalezení účinných rozlišovačů pro kryptografická mapování s aplikací na blokovou šifru TEA. In Proceedings of the 2003 Congress on Evolutionary Computation, 2003.
- Julio César Hernández, José María Sierra, Arturo Ribagorda, Benjamin Ramos a JC Mex-Perera. Rozlišení TEA od náhodné permutace: Redukované kulaté verze TEA nemají SAC nebo negenerují náhodná čísla. In Proceedings of the IMA Int. Conf. on Cryptography and Coding 2001, pages 374-377, 2001.
- Dukjae Moon, Kyungdeok Hwang, Wonil Lee, Sangjin Lee a Jongin Lim. Nemožná diferenciální kryptoanalýza redukovaného kulatého XTEA a TEA. Lecture Notes in Computer Science, 2365: 49-60, 2002. ISSN 0302-9743.
- Seokhie Hong, Deukjo Hong, Youngdai Ko, Donghoon Chang, Wonil Lee a Sangjin Lee. Diferenciální kryptoanalýza TEA a XTEA. In Proceedings of ICISC 2003, 2003b.
Externí odkazy
- Kryptoanalýza malého šifrovacího algoritmu
- Webová stránka obhajující TEA a poskytující různé implementace
- Testovací vektory pro TEA
- Přehled TEA a XTEA a jejich kryptoanalýza
- JavaScript implementace XXTEA s Base64
- JavaScript implementace TEA
- JavaScript a PHP implementace XTEA (anglický text)
- JavaScript a PHP implementace XXTEA