Designer (r) | David Wheeler og Roger Needham |
---|---|
Første publikasjon | 1997 |
Avledet fra | Nei |
Kryptering (er) basert på denne algoritmen | XTEA |
Blokkstørrelse (r) | 64 bit |
---|---|
Nøkkel lengde (r) | 128 bits |
Struktur | Feistel-nettverk |
Antall svinger | Variabel; 64 Feistel-svinger anbefales (32 sykluser) |
Bedre kryptanalyse
Tiny Encryption Algorithm (eller TEA) er en algoritme for blokkryptering som er kjent for enkelheten i beskrivelsen og implementeringen (vanligvis noen få kodelinjer). Dette er et Feistel-nettverk som består av et betydelig antall tårn: 32. Det ble designet av David Wheeler og Roger Needham fra Cambridge Computer Lab, og ble presentert på Fast Software Encryption i 1994 . Det er ikke gjenstand for noe patent.
Vikram Reddy Andem presenterte en kryptanalyse av krypteringen for sin masteroppgave.
Følgende kode er en tilpasning av C- kildekoden fra den opprinnelige Wheeler og Needham-artikkelen.
#include <stdint.h> void chiffrer (uint32_t* v, uint32_t* k) { uint32_t v0=v[0], v1=v[1], sum=0, i; /* initialisation */ uint32_t delta=0x9e3779b9; /* constantes de clef */ uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* mise en cache de la clef */ for (i=0; i < 32; i++) { /* boucle principale */ sum += delta; v0 += ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); v1 += ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); } v[0]=v0; v[1]=v1; } void dechiffrer (uint32_t* v, uint32_t* k) { uint32_t v0=v[0], v1=v[1], sum=0xC6EF3720, i; /* initialisation */ uint32_t delta=0x9e3779b9; /* constantes de clefs */ uint32_t k0=k[0], k1=k[1], k2=k[2], k3=k[3]; /* mise en cache de la clef */ for (i=0; i<32; i++) { /* boucle principale */ v1 -= ((v0<<4) + k2) ^ (v0 + sum) ^ ((v0>>5) + k3); v0 -= ((v1<<4) + k0) ^ (v1 + sum) ^ ((v1>>5) + k1); sum -= delta; } v[0]=v0; v[1]=v1; }